我正在尝试添加两个列表,但考虑使用类型。
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类型的值?
答案 0 :(得分:2)
添加类型约束:
let add2Lists (a : x) (b : x) : x =
List.map2 add a b;;
供您参考,函数不返回类型,它们返回(实际上,评估为)某种类型的值(可能取决于参数的类型)。所以,你的问题应该说“我如何使add2Lists
字面上评估为x
类型的值?”或者,更准确地说,“如何使报告的add2Lists
结果类型字面上为x
?”