私は Programming Clojure 2nd edition を読んでいて、49 ページでは Clojure の for ループ構造について説明していますが、これは実際にはシーケンス内包表記であると書かれています。
著者は、次のコードを提案しています。
(defn indexed [coll] (map-indexed vector coll))
(defn index-filter [pred col]
(when pred
(for [[idx elt] (indexed col) :when (pred elt)] idx)))
(index-filter #{\a} "aba")
(0 2)
...Java ベースの命令型の例よりも望ましいものであり、与えられた証拠は、「高階関数を使用することにより...機能的な index-of-any は、変数の必要性をすべて回避する」ことです。
変数でない場合、「idx」、「elt」とは何ですか? アキュムレータ以外の変数を意味しますか?
また、なぜ「a」ではなく #{\a} なのですか?