我有一些v其中v可以是int,bool,甚至像string option * string这样的东西,如何检查v是int,bool还是字符串选项* string?
如果这是不可能的话,那么我可能会接近我的问题。
根据v是什么,我想返回具有相同多态类型的不同类型,例如,键入我声明的'value'。
答案 0 :(得分:3)
如果需要,可以使用GADT:
type _ value =
Int : int -> int value
| String : string -> string value
| Bool : bool -> bool value
let get_value : type v. v value -> v = function
Int i -> i
| String s -> s
| Bool b -> b
例如:
let _ =
Printf.printf "%d %s %b\n%!"
(get_value (Int 2))
(get_value (String "toto"))
(get_value (Bool false))
您可以在http://try.ocamlpro.com/上测试它应该有效的代码。