Como verificar se um símbolo é resolvível no espaço de nome atual?
-
06-07-2019 - |
Pergunta
Quero verificar se um símbolo é resolvível no espaço de nome atual. Qual é a maneira canônica de fazer isso?
Solução
Depois de examinar os documentos da API mais uma vez, tropecei no que poderia ser a função apropriada:
; 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)
Outras dicas
Dar uma olhada em esta página. Por exemplo
(ns-map *ns*)
dará a você um mapa das ligações no espaço de nome atual. Você pode examinar este mapa para decidir se seu símbolo é uma chave no mapa,
(defn resolvable? [sym]
(contains? (ns-map *ns*) sym))
Eu não sei se este é o canônico caminho.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow