我正在用OCaml编写一个Lisp解释器。这描述了我的类型系统: type atom = Bool of bool | Float of floatSymbol of string
| Atom of atom
| Pair of sexpr * sexpr 我想在这里包含函数作为第一类的值为此,我计划了一个可以添加到我的atom类型中的定义,如下所
let log x = print_int x; log ;;
我期望log打印111并返回自身,然后在第二个调用中打印222,但是它不能像预期的那样工作,而是得到一个错误消息。为什么?如何使它像预期的那样工作?File "./hello.ml", line 3, characters 8-11: ^^^
假设我有一个由多个多态变量(协变)组成的类型,如下所示: [> `Ok of int | `Error of string] 让我们进一步假设,我希望将此定义分解为某种类型构造函数和一个具体的类型int我的第一次尝试是这样的: type 'a error = [> `Ok of 'a | `Error of string] 然而,使用这样的定义会产生一个非常奇怪的类型错误,它提到了一个类型变量'b,该变量没有出
从Coq中提取的Ocaml代码包括(在某些情况下)定义如下的类型__和函数__:let __ = let rec f _ = Obj.repr f in Obj.reprf
文档说,在过去,这种类型被定义为unit (因此__可以被视为()),但是存在(很少)将__类型的值应用于__类型的值的情况。__使用了OCaml中未记录的Obj模块函数,但似乎定义</