Hi, On Wed 23 Jan 2013 14:46, Andrew Gaylard writes: > I made another attempt using strings instead of numbers, to get an idea > of whether save.scm is usable: > > $ cat persistence-test.scm > (use-modules (oop goops)) > (use-modules (oop goops describe)) > (use-modules (oop goops save)) > > ;; Apply Andy's fix to the readable? function > (set! (@@ (oop goops save) readable?) >       (lambda (x) (hashq-ref (@@ (oop goops save) readables) x))) > > ;; make a new class, make an instance of it, and show it > (define-class () name addr) > (define r (make )) > (slot-set! r 'name "Fred") > (slot-set! r 'addr "101 Elm Street") > (describe r) > > ;; persist the instance > (define a '()) > (set! a (acons 'r r a)) > (save-objects a (current-output-port)) > > $ guile > scheme@(guile-user)> (load "persistence-test.scm") > #< 9f2b2a0> is an instance of class > Slots are: >      name = "Fred" >      addr = "101 Elm Street" > (define r (restore (name addr) oop/goops/save.scm:423:32: In > procedure # get set)>: > oop/goops/save.scm:423:32: Wrong type to apply: # write-component> This tells me that this module has not worked in Guile 2.0. Write-component is a macro, and all of its uses were before its definition. There is no way to patch this easily; you have to edit the file. The attached patch is applied to git. Now: (save-objects a (current-output-port)) =| (define r (restore (name addr) "Fred" "101 Elm Street")) Regards, Andy