通用演算法
高階函式可用於實現通用演算法,放棄向使用者提供最終細節的責任。例如,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_left
和 List.sort
。可以在第三方庫中找到更高階的示例。一個很好的例子是在 ocaml-gsl 中實現的模擬退火 。模擬退火是一種通用的優化程式,它通過用於探索問題狀態集和誤差函式(此處稱為能量函式)的函式進行引數化。 ****
熟悉 C++的使用者可以將其與 策略 模式進行比較。