31 lines
762 B
Plaintext
31 lines
762 B
Plaintext
# fs(f, s) takes a function, f, of one value and a sequence of values s,
|
|
# and returns an ordered sequence of the result of applying function f to every value of s in turn.
|
|
|
|
def fs(f; s): s | f;
|
|
|
|
# f1 takes a value and returns it multiplied by 2:
|
|
def f1: 2 * .;
|
|
|
|
# f2 takes a value and returns it squared:
|
|
def f2: . * .;
|
|
|
|
# Partially apply f1 to fs to form function fsf1(s):
|
|
def fsf1(s): fs(f1;s);
|
|
|
|
# Partially apply f2 to fs to form function fsf2(s)
|
|
def fsf2(s): fs(f2; s);
|
|
|
|
# Test fsf1 and fsf2 by evaluating them with s being the sequence of integers from 0 to 3 inclusive ...
|
|
|
|
"fsf1",
|
|
[fsf1(range(0;4))],
|
|
"fsf2",
|
|
[fsf2(range(0;4))],
|
|
|
|
# and then the sequence of even integers from 2 to 8 inclusive:
|
|
|
|
"fsf1",
|
|
[fsf1(range(2;9;2))],
|
|
"fsf2",
|
|
[fsf2(range(2;9;2))]
|