Higher-order algorithms Most of the well-known algorithms are first-order, in the sense that their input and output are "plain" data.
Some are second-order in a trivial way, for example sorting, hashtables or the map and fold functions: they are parameterized by a function, but they don't really do anything interesting with it except invoke it on pieces of other input data.

Some are also second-order but somewhat more interesting:


Fingertrees parameterized by monoids
Splitting a fingertree on a monotonous predicate
Prefix sum algorithms, again usually parameterized by a monoid or a predicate etc.


Finally, some are "truly" higher-order in the sense that is most interesting to me:


The Y combinator
Difference lists


Do there exist other nontrivial higher-order algorithms?

In attempt to clarify my question, under "nontrivial higher-order" I mean "using higher-order facilities of the computational formalism in a critical way in the algorithm's interface and/or implementation"
there are a bunch of algorithms that are "truly 2nd order" although usually not explicitly described in these terms.  Whenever we have sub-linear time algorithms, implicit is some kind of oracle access to the input, i.e. really treating the input as a function.  

Examples:

(1) The Ellipsoid algorithms when working with a "separation oracle" (eg http://math.mit.edu/~vempala/18.433/L18.pdf )

(2) Submodular function minimization (eg http://people.commerce.ubc.ca/faculty/mccormick/sfmchap8a.pdf )

(3) The whole field of property testing is really of this form ( http://www.wisdom.weizmann.ac.il/~oded/test.html )

(4) Combinatorial auctions in the query model (eg  http://pluto.huji.ac.il/~blumrosen/papers/iter.pdf )