В Clojure REPL это выражение
( #(for [x %] (+ 100 (second x))) ['(+ 38) '(+ 48)] )
производит (138 148), как и ожидалось
но это
( #(for [x %] ((first x) 100 (second x))) ['(+ 38) '(+ 48)] )
производит (38 48), что кажется действительно странным.
Оба выражения действительно должны давать одинаковый результат!
Что мне не хватает?
Буду признателен за любые идеи, чтобы разгадать эту тайну.
Кстати, я пытался использовать 'apply (first x)' и упаковать остальные аргументы в список, но это не имеет значения. Тот же неожиданный результат возвращается.
Кроме того, чтобы убедиться, что + действительно разрешается на входе, я передал в REPL
следующее
( #(for [x %] (resolve (first x) )) '((+ 38) (+ 48)) )
который произвел
(#'clojure.core/+ #'clojure.core/+) as expected.