[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gcl-devel] Re: LISP package external symbols
From: |
Camm Maguire |
Subject: |
[Gcl-devel] Re: LISP package external symbols |
Date: |
24 Nov 2003 11:44:57 -0500 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 |
Greetings, and thank you *very* much for this feedback!
As you know, one of the gcl developers is writing an ansi test suite
which we a re using to organize or work toward ansi compliance. He
has a number of ostensibly similar tests
(e.g. NO-EXTRA-SYMBOLS-EXPORTED-FROM-COMMON-LISP), but which seem to
give different results.
If you have a Debian gcl package installed, the test results are in
/usr/share/doc/{gcl,gclcvs}/test_results.gz. Otherwise, you can run
the suite yourself from a built ansi tree by 'cd ansi-tests &&
../unixport/saved_ansi_gcl' and then (load "gclload.lsp").
I'm cc'ing him to see if we can get a definitive list agreed upon in
the test suite failure output. From there, eliminating the first list
should be relatively easy. Many in the second require implementation
work on our part, which is progressing steadily, but will take some
time. Contributed patches are much appreciated. Work at this level
should be confined to the cvs HEAD (i.e. development/unstable) branch,
I'd think.
Take care,
Robert Boyer <address@hidden> writes:
> Here is a more constructive message on what is external to the LISP package
> in GCL vs. what is supposed to be according to the Hyperspec. First
> I list the offending symbols. Then I list very simple code for computing
> these differences.
>
> These 77 symbols are in GCL but should not be
>
> (VOID UNSIGNED-SHORT UNSIGNED-CHAR UNIX TRUNCATE_USE_C TAG SYSTEM
> STRING-CHAR-P STRING-CHAR SPICE SPECIFIC-ERROR
> SPECIFIC-CORRECTABLE-ERROR SPECIAL-FORM-P SIGNED-SHORT
> SIGNED-CHAR SGC SFUN SET-CHAR-BIT SAVE QUIT PROCLAMATION
> POSITIVE-FIXNUM OBJECT MC68020 MAKE-CHAR MACRO LAMBDA-CLOSURE
> LAMBDA-BLOCK-CLOSURE LAMBDA-BLOCK KYOTO KCL INT-CHAR INT
> IEEE-FLOATING-POINT HELP* HELP GMP GFUN
> GET-SETF-METHOD-MULTIPLE-VALUE GET-SETF-METHOD GCL GBC EVALHOOK
> DOUBLE DEFLA DEFINE-SETF-METHOD DEFENTRY DEFCFUN COMPILER-LET
> COMMONP COMMON CLX-LITTLE-ENDIAN CLINES CHAR-SUPER-BIT
> CHAR-META-BIT CHAR-HYPER-BIT CHAR-FONT-LIMIT CHAR-FONT
> CHAR-CONTROL-BIT CHAR-BITS-LIMIT CHAR-BITS CHAR-BIT CFUN
> CCLOSURE BYE BY BSD386 BSD APPLYHOOK ALLOCATE AKCL *LINK-ARRAY*
> *EVALHOOK* *EVAL-WHEN-COMPILE* *BREAK-ON-WARNINGS*
> *BREAK-ENABLE* *APPLYHOOK*)
>
> These 149 symbols are not in GCL but should be
>
> (WRITE-SEQUENCE WITH-STANDARD-IO-SYNTAX WITH-SLOTS WITH-SIMPLE-RESTART
> WITH-CONDITION-RESTARTS WITH-COMPILATION-UNIT WITH-ACCESSORS
> WILD-PATHNAME-P USE-VALUE UPGRADED-COMPLEX-PART-TYPE
> UPDATE-INSTANCE-FOR-REDEFINED-CLASS
> UPDATE-INSTANCE-FOR-DIFFERENT-CLASS UNBOUND-SLOT-INSTANCE
> TYPE-ERROR-EXPECTED-TYPE TYPE-ERROR-DATUM
> TWO-WAY-STREAM-OUTPUT-STREAM TWO-WAY-STREAM-INPUT-STREAM
> TRANSLATE-PATHNAME TRANSLATE-LOGICAL-PATHNAME
> SYNONYM-STREAM-SYMBOL SYMBOL-MACROLET STREAM-EXTERNAL-FORMAT
> STREAM-ERROR-STREAM STORE-VALUE STANDARD SLOT-VALUE SLOT-UNBOUND
> SLOT-MISSING SLOT-MAKUNBOUND SLOT-EXISTS-P SLOT-BOUNDP
> SIMPLE-ERROR SIMPLE-CONDITION-FORMAT-CONTROL
> SIMPLE-CONDITION-FORMAT-ARGUMENTS SIGNAL SHARED-INITIALIZE
> SET-PPRINT-DISPATCH RESTART-NAME RESTART-CASE RESTART-BIND RESTART
> REMOVE-METHOD REINITIALIZE-INSTANCE READTABLE-CASE READ-SEQUENCE
> PRINT-UNREADABLE-OBJECT PRINT-OBJECT PRINT-NOT-READABLE-OBJECT
> PPRINT-TABULAR PPRINT-TAB PPRINT-POP PPRINT-NEWLINE
> PPRINT-LOGICAL-BLOCK PPRINT-LINEAR PPRINT-INDENT PPRINT-FILL
> PPRINT-EXIT-IF-LIST-EXHAUSTED PPRINT-DISPATCH PATHNAME-MATCH-P
> PACKAGE-ERROR-PACKAGE OPEN-STREAM-P NO-NEXT-METHOD
> NO-APPLICABLE-METHOD NEXT-METHOD-P MUFFLE-WARNING
> METHOD-QUALIFIERS METHOD-COMBINATION-ERROR MAKE-METHOD
> MAKE-LOAD-FORM-SAVING-SLOTS MAKE-LOAD-FORM MAKE-INSTANCES-OBSOLETE
> MAKE-INSTANCE MAKE-CONDITION LOOP-FINISH
> LOGICAL-PATHNAME-TRANSLATIONS LOAD-TIME-VALUE
> LOAD-LOGICAL-PATHNAME-TRANSLATIONS INVOKE-RESTART-INTERACTIVELY
> INVOKE-RESTART INVOKE-DEBUGGER INVALID-METHOD-ERROR
> INTERACTIVE-STREAM-P INITIALIZE-INSTANCE IGNORE-ERRORS IGNORABLE
> HASH-TABLE-REHASH-THRESHOLD HASH-TABLE-REHASH-SIZE HANDLER-CASE
> HANDLER-BIND GET-SETF-EXPANSION FUNCTION-LAMBDA-EXPRESSION
> FUNCTION-KEYWORDS FORMATTER FIND-RESTART FIND-METHOD FIND-CLASS
> FILE-STRING-LENGTH FILE-ERROR-PATHNAME FDEFINITION
> ENSURE-GENERIC-FUNCTION ENSURE-DIRECTORIES-EXIST
> ECHO-STREAM-OUTPUT-STREAM ECHO-STREAM-INPUT-STREAM DYNAMIC-EXTENT
> DESCRIBE-OBJECT DEFPACKAGE DEFMETHOD DEFINE-SYMBOL-MACRO
> DEFINE-SETF-EXPANDER DEFINE-METHOD-COMBINATION DEFINE-CONDITION
> DEFINE-COMPILER-MACRO DEFGENERIC DEFCLASS DEBUG COPY-STRUCTURE
> COPY-PPRINT-DISPATCH CONTINUE CONCATENATED-STREAM-STREAMS
> COMPUTE-RESTARTS COMPUTE-APPLICABLE-METHODS
> COMPILER-MACRO-FUNCTION COMPILER-MACRO CLASS-OF CLASS-NAME
> CHANGE-CLASS CELL-ERROR-NAME CALL-NEXT-METHOD CALL-METHOD
> BROADCAST-STREAM-STREAMS ARITHMETIC-ERROR-OPERATION
> ARITHMETIC-ERROR-OPERANDS ALLOCATE-INSTANCE ADD-METHOD ABORT
> *READ-EVAL* *PRINT-RIGHT-MARGIN* *PRINT-PPRINT-DISPATCH*
> *PRINT-MISER-WIDTH* *PRINT-LINES* *LOAD-TRUENAME* *LOAD-PRINT*
> *LOAD-PATHNAME* *DEBUGGER-HOOK* *COMPILE-VERBOSE* *COMPILE-PRINT*
> *COMPILE-FILE-TRUENAME* *COMPILE-FILE-PATHNAME*
> *BREAK-ON-SIGNALS*))
>
> (in-package "USER")
>
> (defparameter ansisyms
> '(
>
> ; external symbols of the package lisp as defined in the hyperspec:
> ; http://www-2.cs.cmu.edu/Groups/AI/html/hyperspec/HyperSpec/Body/sec_1-9.html
>
> &allow-other-keys *print-miser-width*
> &aux *print-pprint-dispatch*
> &body *print-pretty*
> &environment *print-radix*
> &key *print-readably*
> &optional *print-right-margin*
> &rest *query-io*
> &whole *random-state*
> * *read-base*
> ** *read-default-float-format*
> *** *read-eval*
> *break-on-signals* *read-suppress*
> *compile-file-pathname* *readtable*
> *compile-file-truename* *standard-input*
> *compile-print* *standard-output*
> *compile-verbose* *terminal-io*
> *debug-io* *trace-output*
> *debugger-hook* +
> *default-pathname-defaults* ++
> *error-output* +++
> *features* -
> *gensym-counter* /
> *load-pathname* //
> *load-print* ///
> *load-truename* /=
> *load-verbose* 1+
> *macroexpand-hook* 1-
> *modules* <
> *package* <=
> *print-array* =
> *print-base* >
> *print-case* >=
> *print-circle* abort
> *print-escape* abs
> *print-gensym* acons
> *print-length* acos
> *print-level* acosh
> *print-lines* add-method
> adjoin atom boundp
> adjust-array base-char break
> adjustable-array-p base-string broadcast-stream
> allocate-instance bignum broadcast-stream-streams
> alpha-char-p bit built-in-class
> alphanumericp bit-and butlast
> and bit-andc1 byte
> append bit-andc2 byte-position
> apply bit-eqv byte-size
> apropos bit-ior caaaar
> apropos-list bit-nand caaadr
> aref bit-nor caaar
> arithmetic-error bit-not caadar
> arithmetic-error-operands bit-orc1 caaddr
> arithmetic-error-operation bit-orc2 caadr
> array bit-vector caar
> array-dimension bit-vector-p cadaar
> array-dimension-limit bit-xor cadadr
> array-dimensions block cadar
> array-displacement boole caddar
> array-element-type boole-1 cadddr
> array-has-fill-pointer-p boole-2 caddr
> array-in-bounds-p boole-and cadr
> array-rank boole-andc1 call-arguments-limit
> array-rank-limit boole-andc2 call-method
> array-row-major-index boole-c1 call-next-method
> array-total-size boole-c2 car
> array-total-size-limit boole-clr case
> arrayp boole-eqv catch
> ash boole-ior ccase
> asin boole-nand cdaaar
> asinh boole-nor cdaadr
> assert boole-orc1 cdaar
> assoc boole-orc2 cdadar
> assoc-if boole-set cdaddr
> assoc-if-not boole-xor cdadr
> atan boolean cdar
> atanh both-case-p cddaar
> cddadr clear-input copy-tree
>
> cddar clear-output cos
>
> cdddar close cosh
>
> cddddr clrhash count
>
> cdddr code-char count-if
>
> cddr coerce count-if-not
>
> cdr compilation-speed ctypecase
>
> ceiling compile debug
>
> cell-error compile-file decf
>
> cell-error-name compile-file-pathname declaim
>
> cerror compiled-function declaration
>
> change-class compiled-function-p declare
>
> char compiler-macro decode-float
>
> char-code compiler-macro-function decode-universal-time
>
> char-code-limit complement defclass
>
> char-downcase complex defconstant
>
> char-equal complexp defgeneric
>
> char-greaterp compute-applicable-methods define-compiler-macro
>
> char-int compute-restarts define-condition
>
> char-lessp concatenate define-method-combination
>
> char-name concatenated-stream define-modify-macro
>
> char-not-equal concatenated-stream-streams define-setf-expander
>
> char-not-greaterp cond define-symbol-macro
>
> char-not-lessp condition defmacro
>
> char-upcase conjugate defmethod
>
> char/= cons defpackage
>
> char< consp defparameter
>
> char<= constantly defsetf
>
> char= constantp defstruct
>
> char> continue deftype
>
> char>= control-error defun
>
> character copy-alist defvar
>
> characterp copy-list delete
>
> check-type copy-pprint-dispatch delete-duplicates
>
> cis copy-readtable delete-file
>
> class copy-seq delete-if
>
> class-name copy-structure delete-if-not
>
> class-of copy-symbol delete-package
>
> denominator eq
> deposit-field eql
> describe equal
> describe-object equalp
> destructuring-bind error
> digit-char etypecase
> digit-char-p eval
> directory eval-when
> directory-namestring evenp
> disassemble every
> division-by-zero exp
> do export
> do* expt
> do-all-symbols extended-char
> do-external-symbols fboundp
> do-symbols fceiling
> documentation fdefinition
> dolist ffloor
> dotimes fifth
> double-float file-author
> double-float-epsilon file-error
> double-float-negative-epsilon file-error-pathname
> dpb file-length
> dribble file-namestring
> dynamic-extent file-position
> ecase file-stream
> echo-stream file-string-length
> echo-stream-input-stream file-write-date
> echo-stream-output-stream fill
> ed fill-pointer
> eighth find
> elt find-all-symbols
> encode-universal-time find-class
> end-of-file find-if
> endp find-if-not
> enough-namestring find-method
> ensure-directories-exist find-package
> ensure-generic-function find-restart
> find-symbol get-internal-run-time
> finish-output get-macro-character
> first get-output-stream-string
> fixnum get-properties
> flet get-setf-expansion
> float get-universal-time
> float-digits getf
> float-precision gethash
> float-radix go
> float-sign graphic-char-p
> floating-point-inexact handler-bind
> floating-point-invalid-operation handler-case
> floating-point-overflow hash-table
> floating-point-underflow hash-table-count
> floatp hash-table-p
> floor hash-table-rehash-size
> fmakunbound hash-table-rehash-threshold
> force-output hash-table-size
> format hash-table-test
> formatter host-namestring
> fourth identity
> fresh-line if
> fround ignorable
> ftruncate ignore
> ftype ignore-errors
> funcall imagpart
> function import
> function-keywords in-package
> function-lambda-expression incf
> functionp initialize-instance
> gcd inline
> generic-function input-stream-p
> gensym inspect
> gentemp integer
> get integer-decode-float
> get-decoded-time integer-length
> get-dispatch-macro-character integerp
> get-internal-real-time interactive-stream-p
> intern lisp-implementation-type
>
> internal-time-units-per-second lisp-implementation-version
>
> intersection list
>
> invalid-method-error list*
>
> invoke-debugger list-all-packages
>
> invoke-restart list-length
>
> invoke-restart-interactively listen
>
> isqrt listp
>
> keyword load
>
> keywordp
> load-logical-pathname-translations
> labels load-time-value
>
> lambda locally
>
> lambda-list-keywords log
>
> lambda-parameters-limit logand
>
> last logandc1
>
> lcm logandc2
>
> ldb logbitp
>
> ldb-test logcount
>
> ldiff logeqv
>
> least-negative-double-float logical-pathname
>
> least-negative-long-float logical-pathname-translations
>
> least-negative-normalized-double-float logior
>
> least-negative-normalized-long-float lognand
>
> least-negative-normalized-short-float lognor
>
> least-negative-normalized-single-float lognot
>
> least-negative-short-float logorc1
>
> least-negative-single-float logorc2
>
> least-positive-double-float logtest
>
> least-positive-long-float logxor
>
> least-positive-normalized-double-float long-float
>
> least-positive-normalized-long-float long-float-epsilon
>
> least-positive-normalized-short-float long-float-negative-epsilon
>
> least-positive-normalized-single-float long-site-name
>
> least-positive-short-float loop
>
> least-positive-single-float loop-finish
>
> length lower-case-p
>
> let machine-instance
>
> let* machine-type
>
> machine-version mask-field
> macro-function max
> macroexpand member
> macroexpand-1 member-if
> macrolet member-if-not
> make-array merge
> make-broadcast-stream merge-pathnames
> make-concatenated-stream method
> make-condition method-combination
> make-dispatch-macro-character method-combination-error
> make-echo-stream method-qualifiers
> make-hash-table min
> make-instance minusp
> make-instances-obsolete mismatch
> make-list mod
> make-load-form most-negative-double-float
> make-load-form-saving-slots most-negative-fixnum
> make-method most-negative-long-float
> make-package most-negative-short-float
> make-pathname most-negative-single-float
> make-random-state most-positive-double-float
> make-sequence most-positive-fixnum
> make-string most-positive-long-float
> make-string-input-stream most-positive-short-float
> make-string-output-stream most-positive-single-float
> make-symbol muffle-warning
> make-synonym-stream multiple-value-bind
> make-two-way-stream multiple-value-call
> makunbound multiple-value-list
> map multiple-value-prog1
> map-into multiple-value-setq
> mapc multiple-values-limit
> mapcan name-char
> mapcar namestring
> mapcon nbutlast
> maphash nconc
> mapl next-method-p
> maplist nil
> nintersection package-error
> ninth package-error-package
> no-applicable-method package-name
> no-next-method package-nicknames
> not package-shadowing-symbols
> notany package-use-list
> notevery package-used-by-list
> notinline packagep
> nreconc pairlis
> nreverse parse-error
> nset-difference parse-integer
> nset-exclusive-or parse-namestring
> nstring-capitalize pathname
> nstring-downcase pathname-device
> nstring-upcase pathname-directory
> nsublis pathname-host
> nsubst pathname-match-p
> nsubst-if pathname-name
> nsubst-if-not pathname-type
> nsubstitute pathname-version
> nsubstitute-if pathnamep
> nsubstitute-if-not peek-char
> nth phase
> nth-value pi
> nthcdr plusp
> null pop
> number position
> numberp position-if
> numerator position-if-not
> nunion pprint
> oddp pprint-dispatch
> open pprint-exit-if-list-exhausted
> open-stream-p pprint-fill
> optimize pprint-indent
> or pprint-linear
> otherwise pprint-logical-block
> output-stream-p pprint-newline
> package pprint-pop
> pprint-tab read-char
> pprint-tabular read-char-no-hang
> prin1 read-delimited-list
> prin1-to-string read-from-string
> princ read-line
> princ-to-string read-preserving-whitespace
> print read-sequence
> print-not-readable reader-error
> print-not-readable-object readtable
> print-object readtable-case
> print-unreadable-object readtablep
> probe-file real
> proclaim realp
> prog realpart
> prog* reduce
> prog1 reinitialize-instance
> prog2 rem
> progn remf
> program-error remhash
> progv remove
> provide remove-duplicates
> psetf remove-if
> psetq remove-if-not
> push remove-method
> pushnew remprop
> quote rename-file
> random rename-package
> random-state replace
> random-state-p require
> rassoc rest
> rassoc-if restart
> rassoc-if-not restart-bind
> ratio restart-case
> rational restart-name
> rationalize return
> rationalp return-from
> read revappend
> read-byte reverse
> room simple-bit-vector
> rotatef simple-bit-vector-p
> round simple-condition
> row-major-aref simple-condition-format-arguments
> rplaca simple-condition-format-control
> rplacd simple-error
> safety simple-string
> satisfies simple-string-p
> sbit simple-type-error
> scale-float simple-vector
> schar simple-vector-p
> search simple-warning
> second sin
> sequence single-float
> serious-condition single-float-epsilon
> set single-float-negative-epsilon
> set-difference sinh
> set-dispatch-macro-character sixth
> set-exclusive-or sleep
> set-macro-character slot-boundp
> set-pprint-dispatch slot-exists-p
> set-syntax-from-char slot-makunbound
> setf slot-missing
> setq slot-unbound
> seventh slot-value
> shadow software-type
> shadowing-import software-version
> shared-initialize some
> shiftf sort
> short-float space
> short-float-epsilon special
> short-float-negative-epsilon special-operator-p
> short-site-name speed
> signal sqrt
> signed-byte stable-sort
> signum standard
> simple-array standard-char
> simple-base-string standard-char-p
> standard-class sublis
> standard-generic-function subseq
> standard-method subsetp
> standard-object subst
> step subst-if
> storage-condition subst-if-not
> store-value substitute
> stream substitute-if
> stream-element-type substitute-if-not
> stream-error subtypep
> stream-error-stream svref
> stream-external-format sxhash
> streamp symbol
> string symbol-function
> string-capitalize symbol-macrolet
> string-downcase symbol-name
> string-equal symbol-package
> string-greaterp symbol-plist
> string-left-trim symbol-value
> string-lessp symbolp
> string-not-equal synonym-stream
> string-not-greaterp synonym-stream-symbol
> string-not-lessp t
> string-right-trim tagbody
> string-stream tailp
> string-trim tan
> string-upcase tanh
> string/= tenth
> string< terpri
> string<= the
> string= third
> string> throw
> string>= time
> stringp trace
> structure translate-logical-pathname
> structure-class translate-pathname
> structure-object tree-equal
> style-warning truename
> truncate values-list
> two-way-stream variable
> two-way-stream-input-stream vector
> two-way-stream-output-stream vector-pop
> type vector-push
> type-error vector-push-extend
> type-error-datum vectorp
> type-error-expected-type warn
> type-of warning
> typecase when
> typep wild-pathname-p
> unbound-slot with-accessors
> unbound-slot-instance with-compilation-unit
> unbound-variable with-condition-restarts
> undefined-function with-hash-table-iterator
> unexport with-input-from-string
> unintern with-open-file
> union with-open-stream
> unless with-output-to-string
> unread-char with-package-iterator
> unsigned-byte with-simple-restart
> untrace with-slots
> unuse-package with-standard-io-syntax
> unwind-protect write
> update-instance-for-different-class write-byte
> update-instance-for-redefined-class write-char
> upgraded-array-element-type write-line
> upgraded-complex-part-type write-sequence
> upper-case-p write-string
> use-package write-to-string
> use-value y-or-n-p
> user-homedir-pathname yes-or-no-p
> values zerop ))
>
> (defparameter gcl-lisp-external-symbols
> (let ((l nil))
> (do-external-symbols
> (s (find-package "LISP") l)
> (push s l)
> l)))
>
> (defun compare-symbols (a b)
> ; returns a list of length two whose first member is the list of symbols in
> a but not b
> ; and whose second is the list of symbols in b but not a
> (setq a (copy-tree a))
> (setq b (copy-tree b))
> (setq a (sort a #'(lambda (x y) (string-lessp (symbol-name x) (symbol-name
> y)))))
> (setq b (sort b #'(lambda (x y) (string-lessp (symbol-name x) (symbol-name
> y)))))
> (let ((remaining-a a)
> (remaining-b b)
> (in-a-but-not-b nil)
> (in-b-but-not-a nil))
> (loop while (or remaining-a remaining-b) do
> (cond ((null remaining-a)
> (loop for x in remaining-b do (push x in-b-but-not-a))
> (setq remaining-b nil))
> ((null remaining-b)
> (loop for x in remaining-a do (push x in-a-but-not-b))
> (setq remaining-a nil))
> ((equal (symbol-name (car remaining-a))
> (symbol-name (car remaining-b)))
> (setq remaining-a (cdr remaining-a))
> (setq remaining-b (cdr remaining-b)))
> ((string-lessp (car remaining-a) (car remaining-b))
> (push (car remaining-a) in-a-but-not-b)
> (setq remaining-a (cdr remaining-a)))
> (t (push (car remaining-b) in-b-but-not-a)
> (setq remaining-b (cdr remaining-b)))))
> (list in-a-but-not-b in-b-but-not-a)))
>
> (defun compare-ansi-and-gcl-lisp-package-external-symbols ()
> ; returns a list of length two whose first member is the list of symbols in
> gcl but not ansi
> ; and whose second is the list of symbols in ansi but not gcl
> (compare-symbols gcl-lisp-external-symbols ansisyms))
>
>
>
--
Camm Maguire address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens." -- Baha'u'llah
- [Gcl-devel] Re: LISP package external symbols,
Camm Maguire <=