Nif*_*dde 4 haskell functional-programming list-comprehension
我正在尝试学习 Haskell,并且正在做一些涉及列表的练习。但我正在努力进行有关列表理解的练习,我真的需要有人来帮助我。练习内容如下:
[(x,y) | x <- [1,2], y <- [3,4]]展示如何使用具有单个生成器的两个推导式来重新表达具有两个生成器的列表推导式。
提示:将一种推导式嵌套在另一种推导式中,并利用库函数concat :: [[a]] -> [a]。
我感谢所有的答案和解释。谢谢。
首先,您可以[1, 2]使用[x | x <- [1, 2]].
现在,对于每个x,您希望拥有(x, 3)和(x, 4)而不仅仅是x。因此,让我们用列表理解来替换它。然后你会得到[[(x, y) | y <- [3, 4]] | x <- [1, 2]].
但这给了你[[(1,3),(1,4)],[(2,3),(2,4)]],因为你将每个都转换x为[(x, 3), (x, 4)]. 正如提示所示,您可以使用concat它来挤压它们。
把它放在一起,你会得到concat [[(x, y) | y <- [3, 4]] | x <- [1, 2]].