[Top][All Lists]
[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