Eu gosto de apropos. Eu realmente quero. Apenas descreva o seu problema, e apropos apresentará uma solução. As vezes.
Exemplo? (apropos “reflexão”) retorna advertência sobre reflexão .
O que eu não gosto sobre o clojure padrão a propósito, que ele não retorna nenhuma informação sobre os namespaces. Então, no meu projeto atual, quando eu executo (a propósito “filtro”), eu obtenho (filtro filtro-chaves-por-val filtro-vals filtro-chaves). Mas onde está esse filtro-chaves-por-val? A qual namespace devo me referir ao chamá-lo?
Então eu fiz apropos +. Ele retorna (# ‘clojure.core / filter #’ utilize.map / filter-keys-by-val # ‘utilize.map / filter-vals #’ utilize.map / filter-keys).
(ns dev.apropos)
(defn apropos+
"Given a regular expression or stringable thing, return a seq of
all definitions in all currently-loaded namespaces that match the
str-or-pattern."
[str-or-pattern]
(let [matches? (if (instance? java.util.regex.Pattern str-or-pattern)
#(re-find str-or-pattern (str (key %)))
#(.contains (str (key %)) (str str-or-pattern)))]
(for [ns (all-ns)
public (ns-publics ns)
:when (matches? public)]
(second public)
)))
;; (in-ns 'user)
;; (use 'dev.apropos)
;; (apropos+ "*warn")
(consulte https://gist.github.com/2873882 ) para uma Síntese.