如何为可变变量定义特定类型?
How can I define a specific type for a mutable variable?
我是 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;;
This expression has type int ref but an expression was expected of type mlvalue
当您定义像 mlvalue
这样的变体类型时,您会为该类型的值定义构造函数。您有一个名为 Ml1
的构造函数,它接受一个 int
并生成一个值。你有一个名为 Ml2
的构造函数,它接受两个 int
并产生一个值。
要生成类型的值,需要包含构造函数。
另外,你的accu
类型不能是mlvalue
。必须是mlvalue ref
,这是不同的类型。
let accu : mlvalue ref = ref (Ml1 0)
(请注意,您不需要提供 accu
的类型。OCaml 将为您推断类型。)
我是 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;;
This expression has type int ref but an expression was expected of type mlvalue
当您定义像 mlvalue
这样的变体类型时,您会为该类型的值定义构造函数。您有一个名为 Ml1
的构造函数,它接受一个 int
并生成一个值。你有一个名为 Ml2
的构造函数,它接受两个 int
并产生一个值。
要生成类型的值,需要包含构造函数。
另外,你的accu
类型不能是mlvalue
。必须是mlvalue ref
,这是不同的类型。
let accu : mlvalue ref = ref (Ml1 0)
(请注意,您不需要提供 accu
的类型。OCaml 将为您推断类型。)