通用算法

高阶函数可用于实现通用算法,放弃向用户提供最终细节的责任。例如,List.sort 需要一个比较函数,它允许实现各种排序方式。这里我们实现了对字符串不区分大小写的排序:

let string_case_insensitive_sort lst =
  let case_insensitive_compare a b =
    String.compare (String.lowercase a) (String.lowercase b)
  in
  List.sort case_insensitive_compare lst

标准库中有一个丰富的高阶函数 列表 ,特别是在 List 模块中,例如参见 List.fold_leftList.sort。可以在第三方库中找到更高级的示例。一个很好的例子是在 ocaml-gsl 中实现的模拟退火模拟退火是一种通用的优化程序,它通过用于探索问题状态集和误差函数(此处称为能量函数)的函数进行参数化。 ****

熟悉 C++的用户可以将其与 策略 模式进行比较。