A lambda is a function that takes exactly one
argument and returns exactly one
It is denoted as follows:
a -> b
a is the
b is the returned
Then a typed lambda notation:
T -> G
T is the type of argument
G is the type of result
lambdanotations arguments do not have names like in e.g.
AttrSetbecause they are positional arguments.
String -> String
String -> Number -> String
As lambdas can take only one argument, the return type of the first lambda expression is a lambda that takes the second argument and returns the final type.
(String -> String) -> [String] -> [String]
Sometimes parenthesis is necessary to clarify order of evaluation
()Parenthesis operator is defined here