tomas@tuxteam.de writes: > Curiously, Jan (also in this thread) came up with "clone", > independently. Yes you're right. :) Speaking of Jan and I both thinking about clone'ish things, we did a bit of talking on IRC and I think we have a very nice version of functional setters where you can "clone" multiple fields at the same time. Here's what it looks like in practice, adapting from the (srfi srfi-9 gnu) code: (define fsf-address (make
#:street "Franklin Street" #:city "Boston" #:country "USA")) (define rms (make #:age 30 #:email "rms@gnu.org" #:address fsf-address)) (define new-rms (clone rms ((.age) 60) ((.address .street) "Temple Place"))) scheme@(guile-user)> (.age rms) $12 = 30 scheme@(guile-user)> (.age new-rms) $13 = 60 scheme@(guile-user)> (.street (.address rms)) $14 = "Franklin Street" scheme@(guile-user)> (.street (.address new-rms)) $15 = "Temple Place" ... not bad, eh? Updated copy of goops-functional-setter.scm attached! What do other people think? Should I try to get this upstream in Guile?