You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell如何通过List comprehension创建并扩展tuple元组列表

问题解答

语法可行性说明

你设想的[(a,b) (b,a) | (a,b) <- zip [1..3] [2..4]]写法不符合Haskell的列表推导语法规则:列表推导中竖线|左侧仅支持单个表达式作为每轮迭代的产出值,不能直接并列放置多个元素表达式。

原生列表推导实现方案

无需调用concat的纯列表推导写法如下,通过新增内层生成器完成元素展开:

[ x | (a,b) <- zip [1..3] [2..4], x <- [(a,b), (b,a)] ]

运行输出和你预期的结果完全一致:

[(1,2),(2,1),(2,3),(3,2),(3,4),(4,3)]

这个写法逻辑非常直观:外层生成器遍历得到每一组(a,b)元组,内层生成器依次取出当前元组对应的正序(a,b)和逆序(b,a)两个值,直接追加到最终的结果列表中,比嵌套concat的写法更简洁易读。


内容的提问来源于stack exchange,提问作者Machine Jonte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:27:02