【发布时间】:2015-02-18 15:45:32
【问题描述】:
我正在编写这个名为 inner 的 curried f# 函数,它应该将 2 个列表作为参数,并根据位置将两者相乘,然后返回总和:
let rec inner xs =
let aux ys = function
| ([], ys) -> 0
| (xs, []) -> 0
| (x::xs, y::ys) -> (x*y) + inner xs ys
aux ys;;
inner [1;2;3] [4;5;6];;
在这种情况下,答案是 32,因为 1*4 + 2*5 + 3*6 = 32。它有效,但有以下消息:
错误 FS0001:类型不匹配。期待一个
'a list -> 'd
但是给了一个'b list * 'a list -> int
'a list类型与'b list * 'a list类型不匹配
我真的不知道在调用 aux 以使其工作时在旁边放什么。
【问题讨论】: