RosettaCodeData/Task/Partial-function-application/Lambdatalk/partial-function-applicatio...

27 lines
461 B
Plaintext

1) just define function as usual:
{def add {lambda {:a :b :c} {+ :a :b :c}}} -> add
2) and use it:
{add 1 2 3} -> 6
{{add 1} 2 3} -> 6
{{add 1 2} 3} -> 6
{{{add 1} 2} 3} -> 6
3) application:
{def fs {lambda {:f} map :f}}
{def f1 {lambda {:x} {* :x 2}}}
{def f2 {lambda {:x} {pow :x 2}}}
{def fsf1 {fs f1}}
{def fsf2 {fs f2}}
{{fsf1} 0 1 2 3}
{{fsf2} 0 1 2 3}
{{fsf1} 2 4 6 8}
{{fsf2} 2 4 6 8}
Output:
0 2 4 6
0 1 4 9
4 8 12 16
4 16 36 64