Часто мне нужно определить функцию в clojure. Если я определяю что-то с defn, как я могу его определить?
Как я могу определить функцию в Clojure?
Ответ 1
Если у вас есть:
(def x 42)
Может быть полезно отвязать var:
(.unbindRoot #'x)
Теперь, если вы попробуете этот
x
Вы получаете:
#<Unbound Unbound: #'user/x>
Ответ 2
Нет версии с одним аргументом, потому что один и тот же Var можно сопоставить в нескольких пространствах имен. Если вы работаете с REPL, вы часто хотите отвязать от пространства имен пользователя, например.
(ns-unmap 'user 'symbol-to-unbind)
Первым аргументом ns-unmap может быть символ или пространство имен, а второй аргумент должен быть символом.
Ответ 3
Я думаю, что для этого можно использовать ns-unmap.
P.S. Не удалось добавить этот код в комментарий, поэтому я поместил его здесь. Чтобы отключить функцию в текущем пространстве имен, вам необходимо использовать следующий код:
(ns-unmap *ns* 'method)