我是Haskell的新手,并且我一直在努力几个小时,以使这两个功能可以一起使用,以使用递归并且没有内置功能来生成压缩的反向列表。
这里是帮助者功能,用于反转列表:
reverseList :: [x] -> [x]
reverseList [] = []
reverseList xs = last xs : reverseList (init xs)
然后是拉链功能
ZipRevLists2 :: [x] -> [y] -> [(x, y)]
ZipRevLists2 _ [] = []
ZipRevLists2 [] _ = []
ZipRevLists2 (x:xs) = reverseList xs
ZipRevLists2 (y:ys) = reverseList ys
ZipRevLists2 (x:xs) (y:ys) = (x,y) : ZipRev2Lists xs ys
我正在尝试向learnyouahaskell.com学习,但唯一的例子是“ ghci>”,而不是真正的函数形式。
谢谢,我终于明白了!
Zip功能
zip' :: [x] -> [y] -> [(x,y)]
zip' _ [] = []
zip' [] _ = []
zip' (x:xs) (y:ys) = (x,y):zip' xs ys
和主要功能
zipRevLists2 :: [Int] -> [Char] -> [(Int,Char)]
zipRevLists2 _ [] = []
zipRevLists2 [] _ = []
zipRevLists2 (x:xs) (y:ys) = zip' (reverseList (x:xs)) (reverseList (y:ys))