调用帮助函数以反转列表,然后在Haskell中压缩列表

问题描述 投票:-1回答:1

我是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>”,而不是真正的函数形式。

list haskell zip helper
1个回答
0
投票

谢谢,我终于明白了!

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))
© www.soinside.com 2019 - 2024. All rights reserved.