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.