Copyright © (C) 2020, Roman Pushkov
Authors: Roman Pushkov (pushkovroman@me.com).
curried(T) = fun((term()) -> curried(T) | T)
curry/1 | The curry function. |
papply/2 | The papply function. |
curry(Fun::fun((...) -> T)) -> curried(T)
The curry function
Turns a multiple-arity function into a sequence of single-arity functions, so that F(X, Y, Z) becomes Fcurried(X)(Y)(Z). Note that Erlang's syntax will require extra parentheses if you wish to pass the arguments in a sequence. Example: > Multiply = curry:curry(fun erlang:'*'/2), > Double = Multiply(2), > Double(10). 20 > Map = curry:curry(fun lists:map/2), > Sequence = curry:curry(fun lists:seq/2), > From1To = Sequence(1), > (Map(Double))(From1To(10)), [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
The papply function
Applies a list of arguments to a curried function. Example: > Foldl = curry:curry(fun lists:foldl/3), > Sum = curry:papply(Foldl, [fun erlang:'+'/2, 0]), > Sum(lists:seq(1, 10)). 55
Generated by EDoc