如何将具有两个生成器的列表推导重新表达为具有一个生成器的两个列表推导,并得到相同的结果?

尼夫海龟

我正在尝试学习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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档