symbol-package
symbol ⇒ contents
Returns the home package of symbol.
(in-package "CL-USER") ⇒ #<PACKAGE "COMMON-LISP-USER">
(symbol-package 'car) ⇒ #<PACKAGE "COMMON-LISP">
(symbol-package 'bus) ⇒ #<PACKAGE "COMMON-LISP-USER">
(symbol-package :optional) ⇒ #<PACKAGE "KEYWORD">
;; Gensyms are uninterned, so have no home package.
(symbol-package (gensym)) ⇒ NIL
(make-package 'pk1) ⇒ #<PACKAGE "PK1">
(intern "SAMPLE1" "PK1") ⇒ PK1::SAMPLE1, NIL
(export (find-symbol "SAMPLE1" "PK1") "PK1") ⇒ T
(make-package 'pk2 :use '(pk1)) ⇒ #<PACKAGE "PK2">
(find-symbol "SAMPLE1" "PK2") ⇒ PK1:SAMPLE1, :INHERITED
(symbol-package 'pk1::sample1) ⇒ #<PACKAGE "PK1">
(symbol-package 'pk2::sample1) ⇒ #<PACKAGE "PK1">
(symbol-package 'pk1::sample2) ⇒ #<PACKAGE "PK1">
(symbol-package 'pk2::sample2) ⇒ #<PACKAGE "PK2">
;; The next several forms create a scenario in which a symbol
;; is not really uninterned, but is "apparently uninterned",
;; and so SYMBOL-PACKAGE still returns NIL.
(setq s3 'pk1::sample3) ⇒ PK1::SAMPLE3
(import s3 'pk2) ⇒ T
(unintern s3 'pk1) ⇒ T
(symbol-package s3) ⇒ NIL
(eq s3 'pk2::sample3) ⇒ T
Should signal an error of type type-error if symbol is not a symbol.