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")