OCaml 泛型算法

示例

高阶函数可用于实现通用算法,而无需向用户提供最终细节。例如,List.sort期望有一个比较功能,该功能允许实现各种排序方式。在这里,我们实现了不区分大小写的字符串排序:

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

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

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