# Accumulator Generator with R

Paul Graham ( http://www.paulgraham.com/accgen.html ) gives the following problem:

Write a function foo that takes a number n and returns a function that takes a number i, and returns n incremented by i.

In R, we could write it like this:

foo <- function (n) function (i) (n <<- n + i)

We can create a new function `fun`

…

```
fun <- foo(2.43)
fun
```

function (i) (n <<- n + i) <environment: 0x3831bc8>

… and test it.

fun(1.1) fun(1.1) fun(2.1)

[1] 3.53 [1] 4.63 [1] 6.73

Without the parentheses around `n <<- n + i`

, the new function would
return `n`

invisibly. So it would still work, but we would need to
call print explicitly.

foo <- function (n) function (i) n <<- n + i fun <- foo(1.1) fun

function (i) n <<- n + i <environment: 0x3aad238>

fun(2.1) print(fun(3.1)) ## 1.1 + 2.1 + 3.1

[1] 6.3