map2 接受两个列表,ls1 和 ls2 以及一个函数 F,并返回一个与 ls1 和 ls2 中最短的长度相同的列表,其中第 i 个元素是将 F 应用于 ls1 和 ls2 的第 i 个元素的结果(以该顺序)
module Map2 where
map2 lst1 lst2 f = map2_iter lst1 lst2 f len 0 []
where len = (min (length lst1), (length lst2))
map2_iter (x:lst1) (y:lst2) f len i acc = if (i == len)
then acc
else let res = (f x y) in
map2_iter (lst1) (lst2) (f) (len) (i+1) ((res):acc)
map2_iter [] [] f len i acc = []
我收到以下错误
Map2.hs:3:20:
No instances for (Eq (Int -> Int), Num (Int -> Int, Int))
arising from a use of `map2_iter'
Possible fix:
add instance declarations for
(Eq (Int -> Int), Num (Int -> Int, Int))
In the expression: map2_iter lst1 lst2 f len 0 []
In an equation for `map2':
map2 lst1 lst2 f
= map2_iter lst1 lst2 f len 0 []
where
len = (min (length lst1), (length lst2))
我不太确定这个错误是什么意思。任何人都可以提供任何帮助吗?
此外,这不是硬件,而是测试准备。