Там некоторый путь состоит в том, чтобы видеть то, что было уже определено на clojure сессии (эквивалентный вызову ls ())? Скажем, то, что я создаю несколько объектов:
(def x 1)
(def y 2.2)
(def plus-one (fn [x] (+ x 1)))
Существует ли команда, которая может быть выполнена, чтобы показать мне, что они теперь существуют в пользовательском пространстве имен?
Я выполняю все задания в пространстве имен пользователей.
user> (def *foo 10)
#'user/*foo
; Просматривать все отображения публичных интернов в пространстве имен пользователей.
user> (ns-publics 'user)
{*foo #'user/*foo}
Теперь давайте определим функцию, которая не является публичной
user> (defn- foobar[x]
(println x)
#'user/foobar
Когда вы вызываете функцию ns-publics. Она не будет показывать foobar-функцию в отображении.
user> (ns-publics 'user)
{*foo #'user/*foo}
Чтобы увидеть внутренние отображения для пространства имен. Используйте (ns-интерны 'ВАШЕ-NAMESPACE)
user> (ns-interns 'user)
{foobar #'user/foobar, *foo #'user/*foo}
Может быть, ns-publics
?
Возвращает карту отображения публичного стажера для пространства имён.
или ns-map
?
Возвращает карту всех отображений для пространства имен.
Как я понимаю, нет никакой "глобальной среды", есть только пространства имен. Конечно, какое бы из них вы в данный момент "находитесь", для практических целей выглядит как "глобальное окружение".