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.