返回OCaml中的类型

时间:2016-04-14 23:44:36

标签: 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列表。我知道一个int列表与类型基本相同,但是我如何使add2Lists逐字地评估为x类型的值?

1 个答案:

答案 0 :(得分:2)

添加类型约束:

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

供您参考,函数不返回类型,它们返回(实际上,评估为)某种类型的(可能取决于参数的类型)。所以,你的问题应该说“我如何使add2Lists字面上评估为x类型的值?”或者,更准确地说,“如何使报告的add2Lists结果类型字面上为x?”