【发布时间】:2023-03-25 21:06:01
【问题描述】:
我是haskell 新手,我正在努力学习haskell。我正在尝试以我能想到的最可能的方式创建简单的功能,例如“复制”。我已经用模式匹配和守卫做了“复制”。 我无法在列表理解中使用 let 。 我可以想象让列表理解并不理想,但我更感兴趣为什么它不起作用=]。
我的问题是:为什么 duplicate' 产生 [Int] 而 duplicate'' 产生 [[Int]] 甚至可以在列表理解中生成带有 let 的 [Int] 吗?
感谢您的时间和帮助:)。
--list comprehension
duplicate' xs = [y | x <- xs, y <- [x,x]]
input => [1,2,3,4]
output => [1,1,2,2,3,3,4,4]
expected? => yes
--list comprehension with let
duplicate'' xs = [y | x <- xs, let y = [x,x]]
input => [1,2,3,4]
output => [[1,1],[2,2],[3,3],[4,4]]
expected? => yes
【问题讨论】:
-
[y | x <- xs, let y = [x,x]]==[[x,x] | x <- xs]你看,这不是你想要的
标签: haskell list-comprehension let