How it is that you can pass a
var when a value is expected?
(let [+ -] [(+ 1 2) (@#'+ 1 2)]) ; => [-1 3]
In that last example the deref can even be left out:
(let [+ -] [(+ 1 2) (#'+ 1 2)]) ; => [-1 3]
This is because Var implements
IFn (the interface for Clojure functions) by calling
deref on itself, casting the result to
IFn and delegating the function call to that.