如何在ocaml中处理多个ocaml类型?

时间:2014-12-20 22:05:49

标签: types compiler-construction ocaml

我在Ocaml中构建一个编译器,我遇到了一个问题..我有一个名为value的变量,这个变量应该接收任何类型的ocaml类型(int,float,char或bool),但我不能做它..

type info = {  
  initialized: bool;
  mutable value : int;
}

我尝试创建一个这样的新类型:

type tipos = int 
           | float
           | char
           | bool 

并将信息定义为:

type info = {  
  initialized: bool;
  mutable value : tipos;
}

但它仍然不起作用..

任何人都可以帮助我吗?谢谢。

1 个答案:

答案 0 :(得分:3)

您需要适用于不同变体的构造函数。这样的事情至少会更接近工作:

type tipos = Int of int | Float of float | Char of char | Bool of bool

然后类型的值如下所示:

# Int (3 * 5);;
- : tipos = Int 15
# Float (3.2 /. 2.0);;
- : tipos = Float 1.6
# Char 'a';;
- : tipos = Char 'a'
# Bool true;;
- : tipos = Bool true