Clojure Repl — есть ли способ увидеть, какие переменные были определены (и, следовательно, доступны) в сеансе REPL?

#clojure

#clojure

Вопрос:

Если я играл в clojure REPL (возможно, экспериментировал с (assoc) или (seq) или (reduce) и создал некоторые временные карты для примеров), но хотел распечатать список переменных, определенных в этом сеансе, есть ли способ сделать это? Что-то вроде (println def) или что-то в этом роде?

Ответ №1:

Вы можете использовать (dir user) , если вы находитесь в user пространстве имен. Или любой другой ns, который вас интересует. Это показывает вам все def -отредактированные вещи. Если его там нет (обычно use он автоматически редактируется в REPL, вы можете найти его в clojure.repl/dir ).

Ответ №2:

ns-interns я думаю, вы можете подойти довольно близко.

 user=> (def x 1)
#'user/x
user=> (def y 2)
#'user/y
user=> (ns-interns *ns*)
{x #'user/x, y #'user/y}