这个符号是什么| 在Haskelll意味着

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)

  • @Koushik在函数定义中使用相同的符号来引入一个后卫,但这不是它们在这里使用的内容. (2认同)
  • 或者"这样". (2认同)

d12*_*ted 4

符号“|” 与符号“|”含义相同 数学(集合论)。你应该把它读成“这样”。数学中的符号“|” 有时被':'代替。

符号“<-”被解读为“来自”。

表达式 x <- [2,5,10] 称为生成器。列表推导式可以有多个生成器,连续的生成器之间用逗号分隔。

列表推导式还可以使用称为“guards”的逻辑表达式来过滤早期生成器生成的值。如果防护为 True,则保留当前值;如果为 False,则丢弃它们。例如,推导式生成list 中所有偶数的[x | x <- [1..10], even x]列表。[2,4,6,8,10][1..10]

希望它能帮助您理解符号“|”的含义 和列表推导式中的“<-”。