Макрос читателя #(<expr>)
заключает в <expr>
дополнительные скобки, поэтому #([%1])
расширяется до значения, эквивалентного (fn [%1] ([%1]))
, а не (fn [%1] [%1])
.Значит ты прав.Они не полностью эквивалентны.
Вы можете попробовать следующее в REPL, которое покажет точное расширение:
user=> '#([%1])
(fn* [p1__862#] ([p1__862#]))
user=> '#(inc %1)
(fn* [p1__865#] (inc p1__865#))