Node: symbol-package, Next: , Previous: symbol-name, Up: Symbols Dictionary



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