反汇编数据类型ocaml

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)

从我看过的例子中我看到"匹配和用"是静态类型的结构,在我的情况下是这样的吗?

sep*_*p2k 5

所以这是一个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)