Haskell列表推导式修改:生成指定对应元素的目标输出
修改Haskell列表推导式达成预期输出
你需要把原来的笛卡尔积遍历改成按位置配对遍历,用zip函数将[1,2]和"ab"的对应元素绑定在一起,让每个a只匹配同位置的b,而非遍历所有b。
修改后的列表推导式:
[((a,b),a+1) | (a,b) <- zip [1,2] "ab"]
原理说明
- 原推导式中
a <- [1,2], b <- "ab"是笛卡尔积遍历逻辑:每个a都会和所有b组合,因此生成4个元素。 zip [1,2] "ab"会生成配对列表[(1,'a'), (2,'b')],遍历这个配对列表时,每个a仅对应一个同位置的b,最终就能得到你想要的两个元素结果。
内容的提问来源于stack exchange,提问作者marvincyk
相关产品推荐
相关产品推荐

