La plupart des algorithmes bien connus sont du premier ordre, en ce sens que leur entrée et leur sortie sont des données "simples". Certaines sont de second ordre de manière triviale, par exemple le tri, les hashtables ou les fonctions map et fold: elles sont paramétrées par une fonction, mais elles ne font vraiment rien d’intéressant avec elle, si ce n’est l’invoquer sur des morceaux d’autres données d’entrée.
Certains sont aussi de second ordre mais un peu plus intéressants:
- Fingertrees paramétrés par des monoïdes
- Fractionner un doigt sur un prédicat monotone
- Algorithmes de somme de préfixes, là encore généralement paramétrés par un monoïde ou un prédicat, etc.
Enfin, certains sont "véritablement" d'ordre supérieur dans le sens qui m'intéresse le plus:
- Le combinateur Y
- Listes de différences
Existe-t-il d'autres algorithmes d'ordre supérieur non triviaux?
Dans le but de clarifier ma question, j'entends par "d'ordre supérieur non trivial" l'utilisation "de fonctions critiques du formalisme de calcul de manière critique dans l'interface et / ou la mise en oeuvre de l'algorithme".