我正在尝试学习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]]
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句