2011-08-16 8 views
4

私の質問にはうまく言えないが、私は特に質問する言葉がないように思える。このリストを読むには?

ハスケル学習救助捜索中に、1から1000までの3の倍数のリストが得られました。私はこのラインが何をしているのか理解しています.GHCiで評価するのはそれほど難しいことではありません。

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

私の実際の問題は、私は、プレーンenglischとどのように正確にリストが生成され、どのようなn | n <- [1..1000]手段でこの行を読んでする方法がわからないです。 これはforループと同様に読み取ることができますか?

このような表現は、私が読んだ基本的なチュートリアルでカバーされていませんでした。初心者が読めると思われるドキュメントはどこにありますか?

私は実際に私がそこに入力する内容記述したいくつかの語彙を持っていた場合、それは非常に私のlearingプロセスを改善するだろう;)

+2

ハスケルフォーグレートグッドについては、本の初めにこのセクションを掲載しています - http://learnyouahaskell.com/starting-out#im-a-list-comprehension – ocharles

+0

楽しいもの。私はそれを知っていましたが、リストを含む多くの異なる例の後で、280ページのかなり後半にそれをカバーするReal World Haskellから始めました。今、私は本当にこれが特定のリストを生成するための素晴らしい方法である理由を理解していません。 –

+1

btwという表記は、いわゆる[セットビルダー表記](http://en.wikipedia.org/wiki/Set-builder_notation) – hvr

答えて

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

list comprehensionと呼ばれています。基本的には、「nのリスト、nは範囲1〜1000、nは剰余3 == 0」と読み替えることができます。

+0

のリストの読み方に欠点があります。今私は何を探すべきかを知っている。ありがとう。 –

9

[n | n <- [1..1000], nレム3 == 0]n[1 .. 1000]n `rem` 3 == 0にあるように、すべてのnのリストです。

これは、設定表記(つまり、{n | n ∈ (1..1000), n ≡ 0 mod 3})と同様に解釈されます。

+0

「翻訳」ありがとうございます。 –

関連する問題