symbol-package (ANSI and GNU Common Lisp Document)

Next: symbol-plist, Previous: symbol-name, Up: Symbols Dictionary

#### 10.2.12 symbol-package [Function]

`symbol-package` symbol ⇒ contents

#### Arguments and Values::

symbol—a symbol.

contents—a package object or nil.

#### Description::

Returns the home package of symbol.

#### Examples::

     (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

#### Affected By::

import, intern, unintern

#### Exceptional Situations::

Should signal an error of type type-error if symbol is not a symbol.

#### See Also::

intern