use*_*659 5 haskell haskell-platform
有人可以向我解释这个编码.
[ x*y | x <- [2,5,10], y <- [8,10,11], x*y > 50]
Run Code Online (Sandbox Code Playgroud)
我不明白这个|的含义 哈斯克尔的象征
Chr*_*lor 10
你应该把它读作"where"或"that that" -
-- x * y where x is from [2,5,10] and y is from [8,10,11] and x * y > 50
[ x * y | x <- [2,5,10], y <- [8,10,11], x * y > 50]
Run Code Online (Sandbox Code Playgroud)
或者,如果您熟悉Python及其列表推导,您可能会将其视为"for"
-- [x * y for x in [2,5,10] for y in [8,10,11] if x * y > 50]
[x * y | x <- [2,5,10], y <- [8,10,11], x * y > 50]
Run Code Online (Sandbox Code Playgroud)
符号“|” 与符号“|”含义相同 数学(集合论)。你应该把它读成“这样”。数学中的符号“|” 有时被':'代替。
符号“<-”被解读为“来自”。
表达式 x <- [2,5,10] 称为生成器。列表推导式可以有多个生成器,连续的生成器之间用逗号分隔。
列表推导式还可以使用称为“guards”的逻辑表达式来过滤早期生成器生成的值。如果防护为 True,则保留当前值;如果为 False,则丢弃它们。例如,推导式生成list 中所有偶数的[x | x <- [1..10], even x]列表。[2,4,6,8,10][1..10]
希望它能帮助您理解符号“|”的含义 和列表推导式中的“<-”。
| 归档时间: |
|
| 查看次数: |
251 次 |
| 最近记录: |