【问题标题】:OCaml pattern matching on builtin types内置类型的 OCaml 模式匹配
【发布时间】:2010-07-29 00:46:03
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: types pattern-matching ocaml


    【解决方案1】:

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

    您也许可以使用外部 C 函数 (18.3) 做您想做的事情,不过,看看原子标签部分,我不确定您是否能够区分 char 和 @987654327 @。

    【讨论】:

    • :( - 这就是我所害怕的。哦,好吧,我想我的程序看起来不太好。
    • 你为什么要做这样的事情?可能有更好的方法。
    • 我认为我可以通过这种方式编写一个多态函数,并覆盖我需要的不同类型,但考虑到更多,我可能需要使用变体,因为我最终也会做一个词法分析步骤。
    猜你喜欢
    • 2016-01-17
    • 2013-06-14
    • 2021-12-13
    • 2018-08-19
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 2022-01-11
    • 2012-01-12
    相关资源
    最近更新 更多