From: David Vazquez Date: Fri, 18 Jan 2013 02:15:57 +0000 (+0000) Subject: SYMBOL-PACKAGE X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;ds=sidebyside;h=074ea419432183745005ee18871b55bfc167dd5b;p=jscl.git SYMBOL-PACKAGE --- diff --git a/ecmalisp.lisp b/ecmalisp.lisp index 39c6a21..4ed550d 100644 --- a/ecmalisp.lisp +++ b/ecmalisp.lisp @@ -493,17 +493,25 @@ ;; with the symbols built during bootstrap. (defun %intern-symbol (symbol) (let ((symbols (%package-symbols *package*))) + (oset symbol "package" *package*) (oset symbols (symbol-name symbol) symbol))) (defun intern (name &optional (package *package*)) (let ((symbols (%package-symbols package))) (if (in name symbols) (oget symbols name) - (oset symbols name (make-symbol name))))) + (let ((symbol (make-symbol name))) + (oset symbol "package" package) + (oset symbols name symbol))))) (defun find-symbol (name &optional (package *package*)) (let ((symbols (%package-symbols package))) - (oget *package* name)))) + (oget *package* name))) + + (defun symbol-package (symbol) + (unless (symbolp symbol) + (error "it is not a symbol")) + (oget symbol "package")))