通用演算法

高階函式可用於實現通用演算法,放棄向使用者提供最終細節的責任。例如,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++的使用者可以將其與 策略 模式進行比較。