Coq的代数类型的OCaml中提取
问题描述:
当我提取下列Coq的数据类型来OCaml的:Coq的代数类型的OCaml中提取
Inductive Foo := | A | B.
Inductive Bar (f:Foo) := | C | D.
Extraction Language Ocaml.
Extraction "test.ml" Foo Bar.
我得到以下ML代码:
type foo =
| A
| B
type bar =
| C
| D
在“酒吧”型是从不同Coq,因为它有'f'作为其类型签名的一部分。
什么是最好的方式来定义这些类型,以便它们很好地提取到OCaml?
答
您不能:OCaml不支持按词条值编制索引类型,因此诸如Bar A
之类的内容对其没有意义。 Coq被迫删除额外的索引,以便定义与OCaml的类型系统兼容。
我明白这一点。 OCaml中的Coq能够表现类似的类型是什么? – krokodil