Haskell listx2=[x*2 | x

Haskell listx2=[x*2 | x,haskell,list-comprehension,Haskell,List Comprehension,所以我在看一个非常基础的教程,我在列表理解中提到: listx2 = [x * 2 | x<- numberList] 数字列表是一个数字列表 这将获取列表中的每个数字并将其复制,因此numberList=[1,2]将得到[2,4] 但是整个语法是如何结合在一起的呢 我知道x*2是双倍的,但其余的对我来说毫无意义 |就我所知,这个符号是什么,它在那里做什么 列表理解使用它们自己的特殊语法,即 [ e | q1, q2, ..., qn ] |不是or,它是语法的一部分,就像[和] 每个

所以我在看一个非常基础的教程,我在列表理解中提到:

listx2 = [x * 2 | x<- numberList]
数字列表是一个数字列表

这将获取列表中的每个数字并将其复制,因此numberList=[1,2]将得到[2,4]

但是整个语法是如何结合在一起的呢

我知道x*2是双倍的,但其余的对我来说毫无意义

|就我所知,这个符号是什么,它在那里做什么


列表理解使用它们自己的特殊语法,即

[ e | q1, q2, ..., qn ]
|不是or,它是语法的一部分,就像[和]

每个合格中介机构可以有以下形式


列表理解使用它们自己的特殊语法,即

[ e | q1, q2, ..., qn ]
|不是or,它是语法的一部分,就像[和]

每个合格中介机构可以有以下形式

你看到的是句法上的糖分。因此,Haskell并不将管道解释为防护装置等。它将列表理解视为一个整体

然而,这并不意味着你看到的是句法上的糖。因此,Haskell并不将管道解释为防护装置等。它将列表理解视为一个整体


然而,这并不意味着所有这些都应该在任何关于列表理解的教程中解释。你查过了吗?至于为什么要使用确切的语法,就像Haskell的许多其他方面一样,它是从数学中借用来的。我认为这是从集合论中得出的∈ A表示o是集合A的成员。Haskell使用箭头代替∈.这一切都应该在任何关于列表理解的教程中解释。你查过了吗?至于为什么要使用确切的语法,就像Haskell的许多其他方面一样,它是从数学中借用来的。我认为这是从集合论中得出的∈ A表示o是集合A的成员。Haskell使用箭头代替∈.谢谢,这已经记在我的备忘单上了。对于任何其他寻求条件示例的人,这里有一个函数返回列表中的奇数:oddList=[x | x谢谢,它直接进入了我的备忘单。对于任何寻求条件示例的人,这里有一个函数返回列表中的奇数:oddList=[x | x
listx2 = numberList >>= \x -> return (x*2)
listx2 = numberList >>= return . (*2)
instance Monad [] where
    return x = [x]
    xs >>= k = concat $ fmap k xs
listx2 = numberList >>= return . (*2)
listx2 = concat (fmap (return . (*2)) numberList)
listx2 = concat (fmap (\x -> [2*x]) numberList)
listx2 = concat $ map (\x -> [2*x]) numberList
listx2 = concatMap (\x -> [2*x]) numberList