27 lines
461 B
Plaintext
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
|