Что делают символы Clojure при использовании в качестве функций?
При попытке решить проблему 4Clojure »Универсальный вычислительный движок " включая повторную реализацию оценки, я случайно назвал что-то вроде этого:
(apply '/ '(16 8))
а не предназначено:
(apply / '(16 8))
Это имело запутанный побочный эффект возвращения8
Это заставило меня думать, что я испортил свою математику.
Позже я понял свою ошибку после некоторой отладки.Я не смог оценить/
символ, прежде чем пытаться назвать его -и так понял, чтоclojure.lang.Symbol
должен реализоватьclojure.lang.IFn
, Но что это за реализацияделать? Все, что я могу сделать, это вернутьсяnil
с одним аргументом или вторым аргументом, если он задан.