类型 ''a list' 不支持运算符 '+'
The type ''a list' does not support the operator '+'
auxInner
下面 returns 一个 int 列表。但是当我在随后的 inner
函数中调用 List.sum(auxInner xs ys)
时,我得到了这个奇怪的错误! List.sum
不接受 int 列表吗?
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)
inner
return 列表的另一个模式因此 List.sum(auxInner xs ys)
也必须 return 列表。
另一方面,List.sum 在类型上使用一些已定义的 (+) 来进行求和。
如前所述,求和必须是一个列表,因此我们需要一种以某种方式对列表求和的方法。
由于没有为列表定义 (+),您会收到该错误消息。
很有可能你必须在每个匹配案例中 returns 一个 int 或在每个案例中 returns 一个列表,也许是单例 [List.sum (auxInner xs ys)]
但没有上下文...
auxInner
下面 returns 一个 int 列表。但是当我在随后的 inner
函数中调用 List.sum(auxInner xs ys)
时,我得到了这个奇怪的错误! List.sum
不接受 int 列表吗?
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)
inner
return 列表的另一个模式因此 List.sum(auxInner xs ys)
也必须 return 列表。
另一方面,List.sum 在类型上使用一些已定义的 (+) 来进行求和。
如前所述,求和必须是一个列表,因此我们需要一种以某种方式对列表求和的方法。
由于没有为列表定义 (+),您会收到该错误消息。
很有可能你必须在每个匹配案例中 returns 一个 int 或在每个案例中 returns 一个列表,也许是单例 [List.sum (auxInner xs ys)]
但没有上下文...