Module curry

Currying functionality for Erlang.

Copyright © (C) 2020, Roman Pushkov

Authors: Roman Pushkov (pushkovroman@me.com).

Description

Currying functionality for Erlang.

Data Types

curried()

curried(T) = fun((term()) -> curried(T) | T)

Function Index

curry/1 The curry function.
papply/2 The papply function.

Function Details

curry/1

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]

papply/2

papply(Fun::curried(T), Args::[term()]) -> curried(T) | T

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