From: Torkel Holm
Subject: Recursive describe-object
Date: Sat, 11 Dec 2004 17:04:53 +0000 
Message-ID: <86is78g40a.fsf@rikse.ii.uib.no>  How are you dealin with recursive structures
likes this with DESCRIBE-OBJECT?
(defclass node () 
  ((name :initform 'default-name :initarg :name :reader node-name)
   (data :initform 'default-data :initarg :data :reader node-data)))
(defclass composite (node)
  ((children :initform nil :initarg :children :accessor composite-children))) 
(defclass leaf (node) ())
(defmethod describe-object ((obj node) stream)
  (format stream "~&~A" obj)
  (format stream "~&Name:~A" (node-name obj))
  (format stream "~&Data:~A" (node-data obj)))
(defmethod describe-object :after ((obj composite) stream)
  (loop for x in (composite-children obj)
     do (describe x)))
(describe 
 (make-instance 'composite
                :name 'outer-composite
                :data 'outer-composite-data
                :children 
                (list 
                 (make-instance 'composite 
                                :name 'inner-composite
                                :data 'inner-composite-data
                                :children 
                                (list (make-instance 'leaf :name 'foo 
                                                     :data 'foo-data)))
                 (make-instance 'leaf :name 'bar :data 'bar-data))))
=> 
#<COMPOSITE>
Name:OUTER-COMPOSITE
#<COMPOSITE>
Name:INNER-COMPOSITE
#<LEAF>
Name:FOO
Data:FOO-DATAData:INNER-COMPOSITE-DATA
#<LEAF>
Name:BAR
Data:BAR-DATAData:OUTER-COMPOSITE-DATA
It doesnt look too good on ACL ;)
-- 
Torkel Holm From: Coby Beck
Subject: Re: Recursive describe-object
Date: Sat, 11 Dec 2004 17:09:17 +0000 
Message-ID: <1RFud.53322$6f6.27349@edtnps89>  "Torkel Holm" <······@ii.uib.no> wrote in message 
···················@rikse.ii.uib.no...
>
> How are you dealin with recursive structures
> likes this with DESCRIBE-OBJECT?
[snip]
> It doesnt look too good on ACL ;)
ACL has very good INSPECT features, you would probably be better off using 
those.
-- 
Coby Beck
(remove #\Space "coby 101 @ big pond . com")