Haskell中的x <-xs是什么意思?

Shu*_*ury 1 haskell

在我的一门课程中,我遇到了这个:

numbers xs = [x | x<?xs , even x] 
Run Code Online (Sandbox Code Playgroud)

据我所知,它需要一个数字列表,并创建另一个列表,该列表仅由原始列表中的偶数组成.这究竟是怎么做到的?什么x<-xs意思?

Joh*_*man 5

这是一个列表理解,其中符号被设计为类似于集合构建器表示法,其中令牌<-对应于程式化的小写希腊语epsilon,它是集合成员资格的标准符号.当我阅读列表<-推导时,我倾向于将其读作"从中绘制",因此我将解析[x | x<?xs , even x]为"所有x的列表,使得x从xs中绘制而x是偶数"(,对应于and并用于添加超出单纯成员资格的条件)在从中抽取的列表中).