如何为可变变量定义特定类型?

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 将为您推断类型。)