auxInner
返回一个int列表。但是当我在随后的List.sum(auxInner xs ys)
函数中调用inner
时,我得到了这个奇怪的错误!不List.sum
采用整数列表吗?
let rec auxInner xs ys =
match (xs, ys) with
|([],[]) -> []
|([], ys) -> ys
|(xs, []) -> xs
|(x::xs, y::ys) -> x*y::auxInner xs ys
let rec inner xs ys =
match (xs, ys) with
|([],[]) -> []
|([], ys) -> ys
|(xs, []) -> xs
|(xs, ys) -> List.sum(auxInner xs ys)
答案 0 :(得分:2)
inner
的其他模式会返回一个列表,因此List.sum(auxInner xs ys)
也必须返回一个列表
另一方面,List.sum在类型上使用一些定义的(+)来进行求和。
这个总和必须是如前所述的列表,所以我们需要一种方法来以某种方式对列表求和
由于没有为列表定义(+),您会收到该错误消息。
很有可能你必须在匹配的每种情况下都返回一个int,或者在每种情况下都返回一个列表,可能是单个[List.sum (auxInner xs ys)]
但没有上下文......