Поскольку ваш список котируется:
(def lst '(+ -))
; ^- quote!
его членами являются два символа , а не функции. Символ в Clojure можно использовать как функцию, но тогда он действует очень похоже на ключевое слово (то есть ищет себя в своем аргументе):
('foo {'foo 1})
; => 1
Правильное решение состоит в том, чтобы использовать список - или, идиотически, вектор - функций:
(def lst (list + -)) ; ok
; or...
(def lst `(~+ ~-)) ; very unusual in Clojure
; or...
(def lst [+ -]) ; the idiomatic solution
Тогда ваш apply
пример будет работать.
Кстати, обратите внимание, что функция, напечатанная с помощью REPL, не похожа на символ, который ее называет:
user=> +
#<core$_PLUS_ clojure.core$_PLUS_@10c10de0>