X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=ecmalisp.lisp;h=4ed550d0535010c7a52c1c67a7cea42b4170149b;hb=074ea419432183745005ee18871b55bfc167dd5b;hp=39c6a215c1d990790f39b02b8d1ad65b50ebcb63;hpb=2ce46f0e1c7d6f8b4eab48e1147a8131abc7caf9;p=jscl.git 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")))