Что funct-add
действительно должен делать? Что если это было (funct-add '(- 2 2))
?
Во всяком случае, рассмотрим применить , даже в завершение:
(defn apply-wrapper [args]
(apply (first args) (rest args)))
; note use of of the [...] form
(apply-wrapper [+ 2 2]) ; => 4
(apply-wrapper [- 2 2]) ; => 0
Сравнение этих форм может быть поучительным:
(+ 1 2) ; 3
'(+ 1 2) ; (+ 1 2)
[+ 1 2] ; [#<core$_PLUS_ clojure.core$_PLUS_@a8bf33> 1 2]
Обратите внимание, как оценивался последний; это не просто «буквальный список» - там больше нет символов! : -)
Удачного кодирования.