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模式进行比较。