Skip to content

Instantly share code, notes, and snippets.

@garaemon
Created December 10, 2010 03:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save garaemon/735708 to your computer and use it in GitHub Desktop.
Save garaemon/735708 to your computer and use it in GitHub Desktop.
all of the built-in classes of CommonLisp
(defun enumerate-all-classes (&optional (result nil)
(prepended (list (find-class 't))))
(if (null prepended)
result
(let ((subclasses (closer-mop:class-direct-subclasses (car prepended))))
(let ((new-subclasses (remove-if
#'(lambda (c)
(member c (append prepended result)))
subclasses)))
(enumerate-all-classes (cons (car prepended) result)
(append new-subclasses (cdr prepended)))))))
(mapcar #'class-name (remove-if-not #'(lambda (x) (eq (find-package :common-lisp) (symbol-package (class-name x)))) (remove-if-not #'(lambda (x) (typep x 'built-in-class)) (ENUMERATE-ALL-CLASSES))))
=> (FUNCTION FILE-STREAM STRING-STREAM STREAM CHARACTER SYMBOL BIGNUM FIXNUM
INTEGER RATIO RATIONAL DOUBLE-FLOAT SINGLE-FLOAT FLOAT REAL COMPLEX NUMBER
SIMPLE-ARRAY ARRAY NULL CONS LIST BASE-STRING SIMPLE-BASE-STRING SIMPLE-STRING
STRING SIMPLE-BIT-VECTOR BIT-VECTOR SIMPLE-VECTOR VECTOR SEQUENCE T)
@garaemon
Copy link
Author

こうすればいいのか
(mapcar #'class-name (remove-if-not #'(lambda (x) (eq (find-package :common-lisp) (symbol-package (class-name x)))) (ENUMERATE-ALL-CLASSES)))

(FUNCTION FILE-STREAM STRING-STREAM STREAM TYPE-ERROR PROGRAM-ERROR PARSE-ERROR
CONTROL-ERROR END-OF-FILE READER-ERROR STREAM-ERROR FILE-ERROR PACKAGE-ERROR
UNBOUND-VARIABLE UNDEFINED-FUNCTION UNBOUND-SLOT CELL-ERROR DIVISION-BY-ZERO
FLOATING-POINT-OVERFLOW FLOATING-POINT-UNDERFLOW FLOATING-POINT-INEXACT
FLOATING-POINT-INVALID-OPERATION ARITHMETIC-ERROR PRINT-NOT-READABLE ERROR
STORAGE-CONDITION SERIOUS-CONDITION STYLE-WARNING WARNING SIMPLE-WARNING
SIMPLE-ERROR SIMPLE-TYPE-ERROR SIMPLE-CONDITION CONDITION PACKAGE
BROADCAST-STREAM SYNONYM-STREAM ECHO-STREAM TWO-WAY-STREAM CONCATENATED-STREAM
RESTART RANDOM-STATE HASH-TABLE READTABLE LOGICAL-PATHNAME PATHNAME
STRUCTURE-OBJECT METHOD METHOD-COMBINATION STANDARD-METHOD
STANDARD-GENERIC-FUNCTION GENERIC-FUNCTION STANDARD-CLASS STRUCTURE-CLASS
BUILT-IN-CLASS CLASS STANDARD-OBJECT CHARACTER SYMBOL BIGNUM FIXNUM INTEGER
RATIO RATIONAL DOUBLE-FLOAT SINGLE-FLOAT FLOAT REAL COMPLEX NUMBER
SIMPLE-ARRAY ARRAY NULL CONS LIST BASE-STRING SIMPLE-BASE-STRING SIMPLE-STRING
STRING SIMPLE-BIT-VECTOR BIT-VECTOR SIMPLE-VECTOR VECTOR SEQUENCE T)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment