Source file genAcc.icn
#<p>
#  A solution to the <i>accumulator generator</i> problem.
#  (This illustrates how to implement a <i>closure</i>
#  using a co-expression.)
#</p>

import lang

procedure main(args)

    f := genAcc(3)
    g := genAcc(5)
    write(f(4)," ",g(4))
    write(f(2)," ",g(3))
    write(f(1.5)," ",g(4.2))

end

procedure genAcc(n)
    return makeProc { while i := (n@&source)[1] do n +:= i }
end

This page produced by UniDoc on 2021/04/15 @ 23:59:43.