ocaml - 返回 OCaml 中的类型

标签 ocaml

我尝试添加两个列表,但考虑使用类型。

type x = int list; 

let add (elem1 : int) (elem2 :int) =
    elem1 + elem2;;

let add2Lists (a : x) (b : x) =
    List.map2 add a b;;

令人惊讶的是,add2Lists 返回:x -> x -> int list。我知道 int 列表本质上与类型相同,但是如何使 add2Lists 从字面上计算为 x 类型的值?

最佳答案

添加类型约束:

let add2Lists (a : x) (b : x) : x =
   List.map2 add a b;;

供您引用,函数不返回类型,它们返回(实际上,计算为)特定类型的值(这可能取决于参数的类型)。因此,您的问题应该是这样说的:“如何使 add2Lists 从字面上评估为 x 类型的值?”或者,更准确地说,“如何使 add2Lists 的报告结果类型实际上是 x?”

关于ocaml - 返回 OCaml 中的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36635927/

相关文章:

Ocaml:导出 mli 文件中的类型

performance - 列出缓存行为

macos - tuareg 模式 emacs ocaml 未找到

stream - OCaml:Stream.peek 不消耗线路?

ocaml - __ 在从 Coq 中提取的 Ocaml 中

pattern-matching - 模式匹配中 `as` 的范围

memory-management - OCaml 是否曾经复制过自定义 block ?

ocaml - 在不炸毁堆栈的情况下生成素数

f# - 为什么 OCaml/F# 中的函数默认不是递归的?

functional-programming - 在 OCaml 中,如何将 "pointers"存储到列表的元素中?