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

Types 如何在ocaml中处理多个ocaml类型?,types,compiler-construction,ocaml,Types,Compiler Construction,Ocaml,我正在用Ocaml构建一个编译器,我遇到了一个问题。。我有一个名为value的变量,这个变量应该接收任何类型的ocaml类型(int、float、char或bool),但我不能这样做 type info = { initialized: bool; mutable value : int; } 我尝试创建一个新类型,如下所示: type tipos = int | float | char | bool # I

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

type info = {  
  initialized: bool;
  mutable value : int;
}
我尝试创建一个新类型,如下所示:

type tipos = int 
           | float
           | char
           | 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
并将信息定义为:

type info = {  
  initialized: bool;
  mutable value : tipos;
}
但它仍然不起作用


有人能帮我吗?谢谢。

不同的变体需要构造函数。这样的事情至少会更有效:

type tipos = Int of int | Float of float | Char of char | Bool of bool
然后,该类型的值如下所示:

type tipos = int 
           | float
           | char
           | 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

不同的变体需要构造函数。这样的事情至少会更有效:

type tipos = Int of int | Float of float | Char of char | Bool of bool
然后,该类型的值如下所示:

type tipos = int 
           | float
           | char
           | 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

不同的变体需要构造函数。这样的事情至少会更有效:

type tipos = Int of int | Float of float | Char of char | Bool of bool
然后,该类型的值如下所示:

type tipos = int 
           | float
           | char
           | 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

不同的变体需要构造函数。这样的事情至少会更有效:

type tipos = Int of int | Float of float | Char of char | Bool of bool
然后,该类型的值如下所示:

type tipos = int 
           | float
           | char
           | 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

你有什么错误?按照杰弗里的指示解决了,谢谢。你有什么错误?按照杰弗里的指示解决了,谢谢。你有什么错误?按照杰弗里的指示解决了,谢谢。你有什么错误?按照杰弗里的指示解决了,谢谢。