The read macro #(<expr>) wraps <expr> in an extra set of brackets, so #([%1]) expands to the equivalent (fn [%1] ([%1])) , not (fn [%1] [%1]) . So you are right. They are not quite equivalent.
You can try the following in REPL, which will show the exact extension:
user=> '#([%1]) (fn* [p1__862#] ([p1__862#])) user=> '#(inc %1) (fn* [p1__865#] (inc p1__865#))
Jonas source share