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

Haskell中如何用列表推导式避免重复书写(c!!x)代码

列表推导式实现方案

用遍历0~7索引的列表推导式生成所有列的展示行,再用concat拼接即可,优化后代码如下:

show (EOBoard f c r) = "EOBoard\n" ++ "Foundations "
   ++ show f ++ "\n" ++ "Columns \n" 
   ++ concat [show (c !! x) ++ "\n" | x <- [0..7]]
   ++ "Reserves " ++ show r

补充优化建议

如果可以保证列表c的长度恰好为8,也可以直接遍历c的元素实现,不需要手动处理索引,避免潜在的越界风险,写法更简洁:

show (EOBoard f c r) = "EOBoard\n" ++ "Foundations "
   ++ show f ++ "\n" ++ "Columns \n" 
   ++ concat [show col ++ "\n" | col <- c]
   ++ "Reserves " ++ show r

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:36:03