如果我的问题措辞不当,我很抱歉,但我似乎缺乏具体要求的话语。
我找到了一行,在搜索Haskell学习资源时,会产生一个从1到1000的所有三的倍数的列表。我理解这一行的作用,在GHCi中看到评估并不太难。
[n | n <- [1..1000], n `rem` 3 == 0]
我的实际问题是我不知道如何在plain englisch中读取这一行以及该列表的生成方式以及n | n <- [1..1000]
的含义。
这可以读取类似于for循环吗?
我读过的基本教程中没有涉及这样的表达。我在哪里可以找到初学者阅读的文档,并介绍如何简单阅读表达式?
如果我实际上有一些词汇描述我在那里输入的内容,那么这将极大地改善我的学习过程;)
答案 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}
)。