如何阅读此列表?

时间:2011-08-16 14:54:50

标签: list haskell

如果我的问题措辞不当,我很抱歉,但我似乎缺乏具体要求的话语。

我找到了一行,在搜索Haskell学习资源时,会产生一个从1到1000的所有三的倍数的列表。我理解这一行的作用,在GHCi中看到评估并不太难。

[n | n <- [1..1000], n `rem` 3 == 0]

我的实际问题是我不知道如何在plain englisch中读取这一行以及该列表的生成方式以及n | n <- [1..1000]的含义。 这可以读取类似于for循环吗?

我读过的基本教程中没有涉及这样的表达。我在哪里可以找到初学者阅读的文档,并介绍如何简单阅读表达式?

如果我实际上有一些词汇描述我在那里输入的内容,那么这将极大地改善我的学习过程;)

2 个答案:

答案 0 :(得分:9)

[n | n <- [1..1000], n `rem` 3 == 0] 

称为list comprehension。它基本上可以理解为:“n的列表,其中n的范围是1到1000,n的余数是3 == 0”。

答案 1 :(得分:9)

[n | n <- [1..1000], n rem 3 == 0]是所有n的列表,n位于[1 .. 1000]n `rem` 3 == 0

它的意思与设定符号类似(即{n | n ∈ (1..1000), n ≡ 0 mod 3})。