kaf*_*fka 2 ocaml functional-programming pattern-matching
如果我必须将数据类型反汇编为可变大小,我仍然可以使用"匹配和使用,如果答案是肯定的,你可以帮我弄清楚(我是这种语言的初学者),或者我还是用其他方法.
定义的类型是这样的:
type 'state formula =
| And of 'state formula list
| Or of 'state formula list
| Literal of bool
| Variable of 'state
Run Code Online (Sandbox Code Playgroud)
从我看过的例子中我看到"匹配和用"是静态类型的结构,在我的情况下是这样的吗?
所以这是一个match用于处理公式类型的示例:
type 'state formula = | And of 'state formula list | Or of 'state formula list | Literal of bool | Variable of 'state
let rec count_vars form = match form with
| And forms
| Or forms -> List.fold_left (+) 0 (List.map count_vars forms)
| Literal _ -> 0
| Variable _ -> 1
let formula = And [ Variable "q0"; Or[ Variable "q1";Variable "q2"]; Variable "q3"]
let vars_in_formula = count_vars formula (* 4 *)
Run Code Online (Sandbox Code Playgroud)