Accumulator factory: Difference between revisions

Content added Content deleted
m (→‎{{header|Phix}}: added syntax colouring the hard way)
Line 1,751: Line 1,751:
<lang scheme>
<lang scheme>
{def acc
{def acc
{def acc.mem {A.new 0}}
{lambda {:a :n}
{+ {A.toS {A.addlast! :n :a}}}}}
{lambda {:n}
{+ {A.toS {A.addlast! :n {acc.mem}}}}} }
-> acc
-> acc


1) using a global:
{acc 1} -> 1

{acc 5} -> 6
{acc 2.3} -> 8.3
{def A {A.new 1}}
-> A
{acc {A} 5}
-> 6
{acc {A} 2.3}
-> 8.3

2) inside a local context:

{let { {:a {A.new 1}}
} {br}{acc :a 5}
{br}{acc :a 2.3}
} ->
6
8.3
</lang>
</lang>