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.