Если вы не знаете, какие символы вы ищете, но знаете, какие пакеты вы хотите найти, вы можете существенно сократить количество запросов, которые вам нужно выполнить, перечислив только символы из этих конкретных пакетов: 1001 *
(defun get-all-symbols (&optional package)
(let ((lst ())
(package (find-package package)))
(do-all-symbols (s lst)
(when (fboundp s)
(if package
(when (eql (symbol-package s) package)
(push s lst))
(push s lst))))
lst))
(get-all-symbols 'sb-thread) ; returns all the symbols in the SB-THREAD package
Строка (get-all-symbols 'sb-thread)
делает именно это.
Если у вас есть представление о том, какой тип символов вы ищете, и хотите угадать их названия, вы можете сделать это
(apropos-list "mapc-") ; returns (SB-KERNEL:MAPC-MEMBER-TYPE-MEMBERS SB-PROFILE::MAPC-ON-NAMED-FUNS)
(apropos-list "map" 'cl) ; returns (MAP MAP-INTO MAPC MAPCAN MAPCAR MAPCON MAPHASH MAPL MAPLIST)
(apropos-list)
возвращает все символы, имя которых содержит строку, которую вы передаете, и принимает необязательный пакет для поиска.
Чтобы выяснить, что делают все эти символы, попробуйте следующее: http://www.psg.com/~dlamkins/sl/chapter10.html