(HOF) A function that can take one or more functions as argument and/or return a function as its value. E.g. map in (map f l) which returns the list of results of applying function f to each of the elements of list l. See also curried function.
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 xsExpanding a call to this macro is equivalent to specialising a call to map in its first argument.
See partial evaluation.