从它们的输入和输出是“普通”数据的意义上讲,大多数众所周知的算法都是一阶的。有些是简单的二阶方法,例如排序,哈希表或map和fold函数:它们是通过函数进行参数化的,但是除了在其他输入数据上调用它外,它们实际上并没有做任何有趣的事情。
有些也是二阶的,但更有趣:
- 由monoids参数化的手指树
- 在单调谓词上分裂手指树
- 前缀和算法,通常又用一个monoid或谓词等参数化。
最后,在我最感兴趣的意义上,有些是“真正的”高阶:
- Y组合器
- 差异清单
是否存在其他非平凡的高阶算法?
为了澄清我的问题,在“非平凡的高阶”下,我的意思是“在算法的接口和/或实现中以关键的方式使用计算形式主义的高阶设施”