Há algo que não entendo sobre funções anônimas usando a notação curta # (..)
O seguinte funciona:
REPL> ((fn [s] s) "Eh")
"Eh"
Mas isso não:
REPL> (#(%) "Eh")
Isso funciona:
REPL> (#(str %) "Eh")
"Eh"
O que não entendo é por que (# (%) "Eh") não funciona e ao mesmo tempo não preciso usar str em ((fn [s] s) "Eh")
Ambas são funções anônimas e ambas assumem, aqui, um parâmetro. Por que a notação abreviada precisa de uma função enquanto a outra notação não?
fonte