Получить список пользовательских переменных - PullRequest
4 голосов
/ 04 декабря 2011

Я хочу получить список всех переменных, которые я создал в сеансе LISP. Я думаю, что это должно быть возможно, если посмотреть на все символы, встроенные в common-lisp-user. Но как я могу получить такой список?

Ответы [ 2 ]

3 голосов
/ 04 декабря 2011

Чтобы получить связанные переменные только из cl-user, вы перебираете все связанные символы с do-symbols и исключаете символы, импортированные из других пакетов:

(let ((external-symbols (mapcan (lambda (pkg)
                                  (let (rez)
                                    (do-symbols (s pkg rez)
                                      (push s rez))))
                                (package-use-list (find-package 'cl-user)))))
  (do-symbols (s 'cl-user)
    (when (and (boundp s)
               (not (member s external-symbols)))
      (print s))))
2 голосов
/ 04 декабря 2011

Вы можете использовать do-symbols для поиска символов в пакете common-lisp-user.

См. запись CLHS для макросов DO-SYMBOLS, DO-EXTERNAL-SYMBOLS, DO-ALL-SYMBOLS

...