Haskell-zip 2列表
我想写一个函数,将两个列表压缩在一起。我有以下代码:Haskell-zip 2列表,haskell,Haskell,我想写一个函数,将两个列表压缩在一起。我有以下代码: zip' :: [a]->[b]->[(a,b)] zip' _ [] = [] zip' [] _ = [] zip' (x:xs)(y:ys)=(x,y) zip'(xs ys) 问题是,当我编译代码时,会出现很多错误 无法将预期类型[b]->t0与实际类型a匹配 函数xs应用于一个参数 知道我做错了什么吗? 如果这听起来像个愚蠢的问题,很抱歉。您需要在返回值后面附加(x,y): zip' (x:xs) (y:ys) = (
zip' :: [a]->[b]->[(a,b)]
zip' _ [] = []
zip' [] _ = []
zip' (x:xs)(y:ys)=(x,y) zip'(xs ys)
问题是,当我编译代码时,会出现很多错误
无法将预期类型[b]->t0与实际类型a匹配
函数xs应用于一个参数
知道我做错了什么吗?
如果这听起来像个愚蠢的问题,很抱歉。您需要在返回值后面附加(x,y)
:
zip' (x:xs) (y:ys) = (x,y):zip' xs ys
否则,它在语法上没有任何意义,因为您没有对与返回值匹配的x,y进行排序
知道我做错了什么吗
代码
(x,y) zip'(xs ys)
方法:将函数(x,y)
应用于两个参数,第一个是zip'
,第二个是将函数xs
应用于ys
的结果
由于(x,y)
不是函数,因此会触发类型错误。此外,xs
不是一个函数,因此它的应用将导致另一种类型的错误