Macro is the parameter of Lambda.
m = \x -- A primitive macro. f = m {x} -- The m builds an lambda with first argumenet, parameter of which is x. f 1 -- 1
Name | Syntax | Type | Detail |
---|---|---|---|
macro | \ p | a -> b -> a | right recursion. |
closure | { x } | a | Makes a function which has no parameter. |
We can build an lambda, by giving a function for the primitive macro.
let = \m \a \v { m v a } -- let \x 42 x => 42 compose = \m \k \a { m (k a) } -- compose (let \x a) (let \y b) -- == \p { let \x a (let \y b p) } -- == \p { \x (\y p b) a }
p = x (q = y) == (p -> (q = y)) x == (p -> (q -> (¥a -> a)) y) x