我是OCaml的初学者。我想编译这段代码,但是我收到了一个错误。
type pointeur_de_code = int;;
type environnement = int;;
type mlvalue =
| Ml1 of int
| Ml2 of pointeur_de_code * environnement;;
let (accu:mlvalue) = ref 0;;
此表达式的类型为int ref,但表达式的类型为mlvalue
定义类似mlvalue
的变体类型时,可以为类型的值定义构造函数。你有一个名为Ml1
的构造函数,它接受一个int
并创建一个值。你有一个名为Ml2
的构造函数,它接受两个int
s并创建一个值。
要创建类型的值,您需要包含构造函数。
此外,你的accu
的类型不能是mlvalue
。它必须是mlvalue ref
,这是一种不同的类型。
let accu : mlvalue ref = ref (Ml1 0)
(请注意,您不需要提供accu
的类型.OCaml将为您推断类型。)