評估布林表示式

我們定義布林表示式的型別,其原子由字串標識為

type expr =
| Atom of string
| Not of expr
| And of expr * expr
| Or of expr * expr

並且可以使用 oracle : string -> bool 評估這些表示式,給出我們發現的原子的值如下:

let rec eval oracle = function
| Atom(name) -> oracle name
| Not(expr) -> not(eval oracle expr)
| And(expr1, expr2) -> (eval oracle expr1) && (eval oracle expr2)
| Or(expr1, expr2)  -> (eval oracle expr1) || (eval oracle expr2)

瞭解該功能如何清晰易讀。由於正確使用模式匹配,讀取此功能的程式設計師只需要很少的時間來確保正確實現。