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