質問
Say-hello-to-first-personはうまくいきます、なぜ皆さん、皆さんを言っていないのですか?
(defpartial greeting [name] [:p.alert "Hello " name ", how are you?"]) (defn say-hello [name] (append $content (greeting name))) (defn say-hello-to-first-person [names] (say-hello (first names))) (defn say-hello-to-everyone [names] (map say-hello names)) (say-hello-to-first-person ["Chris" "Tom" "Jim" "Rocky"]) (say-hello-to-everyone ["Chris" "Tom" "Jim" "Rocky"]).
解決
あなたは doseq
、Clojureの「Foreach」:
(doseq [name names]
(say-hello name))
.
map
は遅延シーケンスを生成するため、実際には実際にアクセスするまで(ここではここにしない)にアクセスするまで、それらのどれも評価されず、副作用は発生しません。
もう1つの選択肢は、→href="http://clojuredocs.org/clojure_core/clojure.core/dorun" real="nofollow"> dorun
の周囲に評価を強制することです。この作品があなたの理解を助けるかもしれない理由について考える(map
はここで慣用のアプローチですが)。
所属していません StackOverflow