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

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))]