Anonyme Funktionen mit Clojure

In Clojure kann man anonyme Funktionen mit der Shortcut Syntax #() schreiben. Das scheint aber nicht mehr zu funktionieren, wenn man Funktionen als Argumente übergibt und diese dann wiederum mit der kurzen Syntax aufruft.

user=> 

user=> (let
  #_=>  [say-hello #(println (str "Hello, " %1))
  #_=>   say-bye #(println (str "Good bye, " %1))
  #_=>   greeting #((%1 %2))]
  #_=>  (greeting say-bye "Jens"))
Good bye, Jens
Execution error (NullPointerException) at user/eval2108$greeting (REPL:4).
null

Abhilfe schafft die Verwendung von apply:

user=> 

user=> (let
  #_=>  [say-hello #(println (str "Hello, " %1))
  #_=>   say-bye #(println (str "Good bye, " %1))
  #_=>   greeting #(apply %1 %2)]
  #_=>  (greeting say-bye '("Jens")))
Good bye, Jens
nil