我最近在OCaml一直在与GADT挣扎.我正在尝试为一种简单的语言编写一个解释器,使用不同的术语:
type (_, _) term =
| Const : lit -> (state, value) term
| Var : ident -> (state, value) term
| Plus : expr * expr -> (state, value) term
| Equ : expr * expr -> (state, value) term
| Neg : expr -> (state, value) term
| Skip : (state, state) term
| Asn : ident * expr -> (state, state) term
| Seq : stat * stat -> (state, state) term
| If : expr …
Run Code Online (Sandbox Code Playgroud)