首页 > 解决方案 > 如何为可变变量定义特定类型?

问题描述

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

标签: typesocamlmutableref

解决方案


当您定义变体类型时,就像mlvalue为该类型的值定义构造函数一样。你有一个名为的构造函数Ml1,它接受一个int并产生一个值。你有一个名为的构造函数Ml2,它接受两个ints 并产生一个值。

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

此外,您的类型accu不能是mlvalue. 它必须是mlvalue ref,这是一个不同的类型。

let accu : mlvalue ref = ref (Ml1 0)

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


推荐阅读