-2

このコードでは:

[x | temp <- str, x <- isVowel temp]

私は何を疑問に思っています

  • <-オペレーターはします
  • <- strオペレーターはします

isVowel引数が母音の場合はtrueを返します。

4

4 に答える 4

6

おっしゃる通り<-、課題のようなものです。

詳細については、リスト内包表記について学習するため優れたリソースをご覧ください。

リスト内包表記は集合内包表記とよく似ています。今のところ、最初の 10 個の偶数を取得することに固執します。使用できるリスト内包表記は[x*2 | x <- [1..10]] . x は [1..10] から引き出され、[1..10] 内のすべての要素 (x にバインドされている) について、その要素を 2 倍にするだけで取得します。

ただし、それだけではありません。

  • <-do 記法でも使用されます。

    do 式では、すべての行が単項値です。その結果を調べるには、"<-" を使用します。

  • <-モナド内包表記でも使用されます (ただし、モナド内包表記は標準の Haskell ではなくなっているため、これはあまり役に立ちません)。

于 2012-09-28T16:00:12.917 に答える
3

リスト内包表記で<-は、基本的に「foreach」です。すべてのpattern <- list句はその を反復処理しますlist。連続する各要素が抽出され、pattern残りの句と結果式のために変数名にバインドされます。

つまり、割り当てに非常によく似ています。命令型言語との主な概念上の違いは、変数を変更または更新するという概念がないことです。アイデアは、反復ごとに名前に新しく「バインド」される不変の値を操作しているということです。

複数のpattern <- list句は、ネストされた for ループのように機能することに注意してください。

于 2012-09-28T17:31:19.063 に答える
1
于 2012-09-29T07:39:50.547 に答える
0

私は間違いなく間違っている可能性があり<-ますが

[x | temp <- str, x <- isVowel temp]

のようなものtemp str、変数の命名規則に役立ちます。したがって、参照の透明性を考慮すると、次のように読むことができます... in inのリストを返し ます。x isVowel str

于 2012-10-01T21:27:08.340 に答える