このコードでは:
[x | temp <- str, x <- isVowel temp]
私は何を疑問に思っています
<-
オペレーターはします<- str
オペレーターはします
isVowel
引数が母音の場合はtrueを返します。
このコードでは:
[x | temp <- str, x <- isVowel temp]
私は何を疑問に思っています
<-
オペレーターはします<- str
オペレーターはしますisVowel
引数が母音の場合はtrueを返します。
おっしゃる通り<-
、課題のようなものです。
詳細については、リスト内包表記について学習するための優れたリソースをご覧ください。
リスト内包表記は集合内包表記とよく似ています。今のところ、最初の 10 個の偶数を取得することに固執します。使用できるリスト内包表記は[x*2 | x <- [1..10]] . x は [1..10] から引き出され、[1..10] 内のすべての要素 (x にバインドされている) について、その要素を 2 倍にするだけで取得します。
ただし、それだけではありません。
リスト内包表記で<-
は、基本的に「foreach」です。すべてのpattern <- list
句はその を反復処理しますlist
。連続する各要素が抽出され、pattern
残りの句と結果式のために変数名にバインドされます。
つまり、割り当てに非常によく似ています。命令型言語との主な概念上の違いは、変数を変更または更新するという概念がないことです。アイデアは、反復ごとに名前に新しく「バインド」される不変の値を操作しているということです。
複数のpattern <- list
句は、ネストされた for ループのように機能することに注意してください。
私は間違いなく間違っている可能性があり<-
ますが、
[x | temp <- str, x <- isVowel temp]
のようなものtemp
で str
、変数の命名規則に役立ちます。したがって、参照の透明性を考慮すると、次のように読むことができます... in inのリストを返し ます。x
isVowel
str