我正在尝试编写一个多态函数,根据参数的类型,它需要做一些稍微不同的事情。有没有什么办法可以使用内置类型对对象的类型进行模式匹配?我正在考虑这些方面的事情:
let to_string v =
match v with
| string -> v
| int -> string_of_int v
| _ -> ""
但这似乎不是一个有效的OCaml程序。
我见过this question,但这也不能完全回答我的问题。我会更喜欢使用标准的内置类型,而不是为此构建新类型(尽管如果这是唯一的方法,我可以这样做)。
答案 0 :(得分:4)
实际上,答案完全适用于您。您只能匹配一个类型类,并且由int
,string
,float
,...的联合定义的类型不存在,并且需要创建(如上一个答案)。 'a
对特定类型进行操作,但不代表所有类型的并集。
您可以使用外部C函数(18.3)执行您想要的操作,但是,看一下原子标记部分,我不确定您是否能够区分{{1} }和char
。