我正在尝试实现一个函数(如下所述),它需要两个列表(每个或两个都可能是无限的)并返回列表之间所有可能元素对的元组列表
zipInf :: [a] -> [b] -> [(a,b)]
(例如输出应该是这样的,但不必完全像这样)
zipInf [0 .. 2] ['A' .. 'C'] ~> [(0,'A'),(1,'A'),(0,'B'),(1,'B'),(0,'C'),(2,'A'),(2,'B'),(1,'C'),(2,'C')]
zipInf [] [0 ..] ~> []
zipInf [0 ..] [] ~> []
take 9 (zipInf ['A'] [0 .. ]) ~> [('A',0),('A',1),('A',2),('A',3),('A',4),('A',5),('A',6),('A',7),('A',8)]
我已经开始像这样实现它:
zipInf :: [a] -> [b] -> [(a,b)]
zipInf [] _ = []
zipInf _ [] = []
zipInf
我想将列表提供给辅助函数以生成列表,但我制作的列表无法编译并且不知道如何处理无限列表
辅助功能-
oneList :: [a] -> [b] [(a,b)]
oneList [] _ = []
oneList x:xs y:ys = [(x,y)] ++ oneList