2013-07-19 60 views

回答

10
(defun symbol-names-structure-p (symbol) 
    (let ((class (find-class symbol nil))) 
    (and class (typep class 'structure-class)))) 

CL-USER 11 > (defstruct foo bar) 
FOO 

CL-USER 12 > (symbol-names-structure-p 'bar) 
NIL 

CL-USER 13 > (symbol-names-structure-p 'foo) 
T 

也:

CL-USER 14 > (ignore-errors (subtypep 'foo 'structure-object)) 
T 
T 

CL-USER 15 > (ignore-errors (subtypep 'bar 'structure-object)) 
NIL 
#<CONDITIONS:ILLEGAL-TYPE-SPECIFIER 402001578B>