2016-08-18 7 views
-1

オンhttps://docs.racket-lang.org/reference/pairs.html#%28def._%28%28lib._racket%2Fprivate%2Fmap..rkt%29._for-each%29%29は何のために23ですか?ラケットのそれぞれについてこの数字は何ですか

(for-each (lambda (arg) 
       (printf "Got ~a\n" arg) 
       23) 
      '(1 2 3 4)) 

コードは '23'がなくても機能します。

+1

例のコードの上の行に何が書かれているかを説明します。この例では、プロシージャの結果(この場合は23)は無視されます。 – uselpa

+0

これはそのページにはっきりしていないので、これを答えとして入れるべきだと思います。 – rnso

答えて

1

例のコードの上の行に何が書かれているか説明しています...この例では23の結果は無視されます。

これは無視されるため、他の値を設定することも、何もしないこともできます。

+0

単純な 'for'とどのように違うのですか?((item '(1 2 3 4)))(printf "Got〜a \ n" item))?単純なforループから区別するfor-eachは何のために特別なのでしょうか? – rnso

+1

'for-each'は標準スキームです。' for'プロシージャはRacketに固有のものです。この場合、彼らは同じことになります。ドキュメントは 'for-each'を' map'と比較します。それらは似ていますが、 'map'は手続きの結果を使用し、' for-each'は手続きの結果を使用しません。 – uselpa

+1

'for-each'は' for'にマップすることができ、 'map'は' for/list'のためにマップできます@mso 'for'ループはSchemeには本当に存在しません。彼らは再帰的な手順のためのちょうど砂糖です。 – Sylwester

1

for-eachは、それぞれのアプリケーションの戻り値を完全に無視し、結果のリストを作成しない特別なバージョンのmapです。提供されるプロシージャーに副作用がない場合、式全体がデッドコードになります。

forは、異なる構文でfor-eachと書くことができる特別な形式です。 map相当のものはfor/listと呼ばれます。 for#!racketには一致しませんが、すべてのScheme言語と方言にはfor-eachが存在します。 forと友人は、マクロであるため、より多くのアキュムレータと停止条件を持つ可能性など、プロシージャバージョンよりも多くの機能を備えています。

関連する問題