Hay algo que no entiendo sobre las funciones anónimas que usan la notación corta # (..)
Los siguientes trabajos:
REPL> ((fn [s] s) "Eh")
"Eh"
Pero esto no:
REPL> (#(%) "Eh")
Esto funciona:
REPL> (#(str %) "Eh")
"Eh"
Lo que no entiendo es por qué (# (%) "Eh") no funciona y, al mismo tiempo, no necesito usar str en ((fn [s] s) "Eh")
Ambas son funciones anónimas y ambas toman, aquí, un parámetro. ¿Por qué la notación abreviada necesita una función mientras que la otra notación no?
fuente