内置类型的OCaml模式匹配

a_m*_*m0d 5 ocaml types pattern-matching

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

let to_string v =
    match v with
    | string -> v
    | int -> string_of_int v
    | _ -> ""
Run Code Online (Sandbox Code Playgroud)

但这似乎不是一个有效的OCaml计划.

我已经看到了这个问题,但这也不能完全回答我的问题.我更喜欢使用标准的内置类型,而不是为此构建新类型(尽管如果这是唯一的方法,我可以这样做).

nlu*_*oni 4

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

您也许可以使用外部 C 函数(18.3)做您想做的事情,尽管浏览一下原子标签部分,我不确定您是否能够区分charint