## The Problem

Declare a function ‘sums’, which takes no arguments and returns another function. The returned function takes a number as an argument, and when invoked, it will return the total sum of the number passed in and the numbers that have previously been passed to the ‘sums’ function.

This is a simple, straightforward problem that demonstrates the concept of a persistent memory in a closure. `count`

is declared in the outer function `counter`

, and `inner`

has access to `count`

since it’s within `counter`

’s scope.

## One solution

```
// i: number
// o: sum of number already stored and number pased in
// declare function counter
function sums() {
// declare variable called count set to zero
let sum = 0;
// return function with num passed in
function inner(num) {
// increment counter by num
sum += num;
// return counter
return sum;
}
return inner;
}
const test = sums();
console.log(test(5)); // 5
console.log(test(10)); // 15
console.log(test(100)); // 115
```