A keyword, конечно, всегда symbol.
Функция в вопросе defined, как
(declaim (inline ensure-symbol))
(defun ensure-symbol (name &optional (package *package*))
"Returns a symbol with name designated by NAME, accessible in package
designated by PACKAGE. If symbol is not already accessible in PACKAGE, it is
interned there. Returns a secondary value reflecting the status of the symbol
in the package, which matches the secondary return value of INTERN.
Example:
(ensure-symbol :cons :cl) => cl:cons, :external
"
(intern (string name) package))
Т.е., ваш фрагмент кода делает это: если x
является keyword (а symbol интернирован в KEYWORD
пакете), то она возвращает «обычный» символ с то же имя интернировано в текущем пакете *package*
(в противном случае оно возвращает x
).
В средах разработки Lisp обычно можно использовать комбинацию клавиш meta-. на символ, чтобы перейти к его исходному коду. Некоторые среды разработки также поддерживают '(ed 'some-function-name)', чтобы открыть окно редактора с соответствующим исходным кодом. –