Я читаю Programming Clojure 2nd edition, и на странице 49 он описывает конструкцию цикла for Clojure, которая, по его словам, на самом деле является пониманием последовательности.
Авторы предлагают следующий код:
(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, и приведено свидетельство того, что он «с помощью функций более высокого порядка ... функциональный индекс любого избегает необходимости в переменных».
Что такое «idx», «elt», если они не являются переменными? Имеются ли в виду переменные помимо аккумуляторов?
Кроме того, почему # {\ a} вместо «a»?