内置类型的OCaml模式匹配

时间:2010-07-29 00:46:03

标签: types pattern-matching ocaml

我正在尝试编写一个多态函数,根据参数的类型,它需要做一些稍微不同的事情。有没有什么办法可以使用内置类型对对象的类型进行模式匹配?我正在考虑这些方面的事情:

let to_string v =
    match v with
    | string -> v
    | int -> string_of_int v
    | _ -> ""

但这似乎不是一个有效的OCaml程序。

我见过this question,但这也不能完全回答我的问题。我会更喜欢使用标准的内置类型,而不是为此构建新类型(尽管如果这是唯一的方法,我可以这样做)。

1 个答案:

答案 0 :(得分:4)

实际上,答案完全适用于您。您只能匹配一个类型类,并且由intstringfloat,...的联合定义的类型不存在,并且需要创建(如上一个答案)。 'a对特定类型进行操作,但不代表所有类型的并集。

您可以使用外部C函数(18.3)执行您想要的操作,但是,看一下原子标记部分,我不确定您是否能够区分{{1} }和char