我尝试添加两个列表,但考虑使用类型。
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/