我想编写一个将两个列表压缩在一起的函数。我有以下代码:
zip' :: [a]->[b]->[(a,b)]
zip' _ [] = []
zip' [] _ = []
zip' (x:xs)(y:ys)=(x,y) zip'(xs ys)
问题在于,当我编译代码时,我会遇到很多错误
无法将预期类型[b] - > t0与实际类型a匹配
函数xs应用于一个参数
任何想法我做错了什么? 对不起,如果这听起来像是一个愚蠢的问题。
答案 0 :(得分:11)
答案 1 :(得分:7)
任何想法我做错了什么?
代码
(x,y) zip'(xs ys)
表示:接受函数 (x,y)
并将其应用于两个参数,第一个是zip'
,第二个是应用函数的结果 xs
到ys
。
由于(x,y)
不是函数,因此会触发类型错误。此外,xs
不是函数,因此应用程序会导致另一个类型错误。