chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] tinyclos - how to copy an object?


From: Kon Lovett
Subject: Re: [Chicken-users] tinyclos - how to copy an object?
Date: Thu, 20 Sep 2007 17:40:42 -0700


On Sep 19, 2007, at 11:40 PM, Shawn Rutledge wrote:

Is there a generic way to copy an object already?  (Make another
instance with the same slots)  Or is it necessary to write such a
function using introspection?

(define copy-object (make-generic "copy-object"))

(add-method copy-object
  (make-method (list <object>)
    (lambda (call-next-method x . initargs)
      (let ([class (class-of x)])
        (apply make class
                    (let ([inited-slot?
                            (lambda (nam)
                              (let loop ([flag #t] [prplst initargs])
                                (and (pair? prplst)
(or (and flag (equal? nam (car prplst))) (loop (not flag) (cdr prplst)) ) ) ) )])
                      (for-each
                        (lambda (s)
                          (let ([nam (car s)])
                            (unless (inited-slot? nam)
(set! initargs (cons nam (cons (slot- ref x nam) initargs))) ) ) )
                        (class-slots class))
                      initargs ) ) ) ) ) )



_______________________________________________
Chicken-users mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/chicken-users





reply via email to

[Prev in Thread] Current Thread [Next in Thread]