Higher-order macro
A means of expressing certain higher-order functions in a first order language.
Proposed by Phil Wadler.
Higher-order macros cannot be recursive at the top level but they may contain recursive definitions.
E.g.
map f l = m l where m []
= [] m (x:xs) = f x : m xs
Expanding a call to this macro is equivalent to specialising a call to map in its first argument.
See partial evaluation.



