2010-12-31 2 views
4

mapが返すコレクションのすべての値がtrueであることをどのようにテストできますか?匿名関数#(identity %)Clojure:マップ操作のすべての値を真実のためにテストする

(defn test [f coll] 
    (every? #(identity %) (map f coll))) 

が、良い方法があれば、私は思っていた:

私は、次の使用しています。

andはマクロなので(apply and ...)は使用できません。

UPDATE:ところで、私はを通じてロジック、数学へのHaskellの道を自分の道を作っています、とEijckできキースDoetsとJanにより、プログラミングが、Clojureの中で練習をやって。非常に面白い本です。

+0

を使用すると、タイプライターフォントで「真」と入力方法は、あなたがチェックしたいように見えます正確な値はBoolean/TRUEですが、コードはnilまたはfalseでない値を受け入れます。 –

+0

@ Jouni K.Seppänen:更新されました。 – Ralph

答えて

4

あなたが行うことができます。

(every? true? coll) 
+0

ありがとうございます。それを行う単一の関数はありますか( '(g(map f coll))')?私はドキュメントを見渡しましたが、ドキュメントを見つけることができませんでした。 – Ralph

+1

本当ですか?ブール値true、論理値trueのテスト。論理的に真の場合は、アイデンティティを使用します。私は、すべての人に単一のアトリエを加えるという話があったと思いますか?これは(すべてのアイデンティティ・コリ)と同等であるため、あなたが望む単一の関数になります。 –

5

いずれか

(every? identity (map f coll)) 

または

(every? f coll) 
関連する問題