accumulate(fn, init, seq)
Return init if the sequence seq is empty. If it is not empty,
apply the function fn to init and the head of seq,
then recur with the value returned by fn in place of init and the tail
of seq.
Return the final value of fn.
function ints(n)
when (n < 10) n:~ints(n+1)
let s = ints(1)
s = accumulate(`+`, 0, s)
s
// 1:<promise>
second(s)
// 3
third(s)
// 6