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

问题描述 投票:1回答:1

我是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

types ocaml mutable ref
1个回答
2
投票

定义类似mlvalue的变体类型时,可以为类型的值定义构造函数。你有一个名为Ml1的构造函数,它接受一个int并创建一个值。你有一个名为Ml2的构造函数,它接受两个ints并创建一个值。

要创建类型的值,您需要包含构造函数。

此外,你的accu的类型不能是mlvalue。它必须是mlvalue ref,这是一种不同的类型。

let accu : mlvalue ref = ref (Ml1 0)

(请注意,您不需要提供accu的类型.OCaml将为您推断类型。)

© www.soinside.com 2019 - 2024. All rights reserved.