类型 ''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)] 但没有上下文...