TL;DR
関数を引数に取るか、関数を戻り値として返す関数。関数を値として扱える(第一級関数を持つ)言語で使える。
仕組み
Wikipedia によると、高階関数は第一級関数をサポートする言語を前提にした概念である。C や Pascal は関数ポインタで高階関数をまねできるが、それで第一級関数をサポートしているとはみなされない。高階関数は、主に関数型言語やラムダ計算でよく使われる。
例
代表的な高階関数に、map、filter、fold がある。map はリストの各要素に関数を適用し、[1, 2, 3] に 1 を足す関数を渡すと [2, 3, 4] を返す。filter は述語が真を返す要素だけを残す。fold は、初期値と要素から次の値を作る関数を繰り返し適用し、最後の値を返す。[1, 2, 3, 4] の総和を fold で求めると 10 になる。
複数の引数を取る関数を、1 引数の関数の連鎖に変えるカリー化も、関数を返す高階関数の例である。