Как проверить, разрешен ли символ в текущем пространстве имен?
-
06-07-2019 - |
Вопрос
Я хочу проверить, разрешен ли символ в текущем пространстве имен. Какой канонический способ сделать это?
Решение
После повторного просмотра документов API я наткнулся на то, что может быть подходящей функцией:
; Returns the var or Class to which the symbol
; will be resolved in the current namespace, else nil.
(resolve 'foo)
; see also:
(ns-resolve *a-namespace* 'foo)
Другие советы
Посмотрите эту страницу . Например,
(ns-map *ns*)
даст вам карту привязок в текущем пространстве имен. Вы можете изучить эту карту, чтобы решить, является ли ваш символ ключом на карте,
(defn resolvable? [sym]
(contains? (ns-map *ns*) sym))
Я не знаю, является ли это каноническим способом.
Не связан с StackOverflow