chicken-users
[Top][All Lists]
Advanced

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

Re: [Chicken-users] s11n among different chicken versions


From: Daishi Kato
Subject: Re: [Chicken-users] s11n among different chicken versions
Date: Thu, 3 Aug 2006 10:29:45 +0900

Now, I can reproduce the problem.

% cat dump.scm
(use s11n)
(define x (make-hash-table))
(hash-table-set! x 'aaa (make-hash-table))
(hash-table-set! x 'bbb (make-hash-table))
(with-output-to-file "dump"
 (lambda ()
   (serialize x)))
% cat undump.scm
(use s11n)
(define (deserialize-fallback id)
 (cond ((string=? id "f_3497library.scm") ; chicken-2.315
        equal?)
       ((string=? id "f_6914extras.scm") ; chicken-2.315
        hash)
       (else
        (error "deserialize-fallback unknown id" id))))
(with-input-from-file "dump"
 (lambda ()
   (deserialize (current-input-port) deserialize-fallback)))
% /usr/local/chicken-2.315/bin/csi -q -s dump.scm
% /usr/local/chicken-2.41/bin/csi -q -s undump.scm
Error: (for-each) argument is not a proper list: ((aaa .
#<hash-table>) . #<procedure (hash x1094 . g10931095)>)

       Call history:

       <eval>          (##sys#require (quote s11n))
       <eval>          (with-input-from-file "dump" (lambda ()
(deserialize (current-input-port) deserialize-fallback)))
       <eval>          (deserialize (current-input-port) deserialize-fallback)
       <eval>          (current-input-port)
       <eval>          [deserialize-fallback] (string=? id "f_3497library.scm")
       <eval>          [deserialize-fallback] (string=? id "f_3497library.scm")
       <eval>          [deserialize-fallback] (string=? id
"f_6914extras.scm")<--
% chicken-dump dump

File: dump
#0: hash table:
 #1:(items) pair:
  #2:(car) pair:
   #3:(car) symbol:
   #4:(name) string "aaa"
   #5:(cdr) hash table:
     (items) ()
     #6:(comparison procedure) procedure:
      #7:(id) string "f_3497library.scm"
       #8:[1] lambda info #<lambda info (equal? x120 y121)>
     #9:(hash function) procedure:
      #10:(id) string "f_6914extras.scm"
       #11:[1] lambda info #<lambda info (%hash x1059 limit1060)>
  #12:(cdr) pair:
   #13:(car) pair:
    #14:(car) symbol:
    #15:(name) string "bbb"
    #16:(cdr) hash table:
      (items) ()
      (comparison procedure) back reference -> #6
      (hash function) back reference -> #9
   (cdr) ()
 (comparison procedure) back reference -> #6
 (hash function) back reference -> #9

How's it?
Daishi

On 8/1/06, Daishi Kato <address@hidden> wrote:
So, this actually is a correct way of using fallback, isn't it?
OK, I'll look for my real problem.
About the safety, don't worry too much, since this is just
a temporal solution, and
I already confirmed with chicken-dump that procedures in my file are
only equal? and hash.

Daishi

On 8/1/06, felix winkelmann <address@hidden> wrote:
> On 8/1/06, Daishi Kato <address@hidden> wrote:
> > Looks like the s11n egg is updated. So I tried, only to see I'm
> > missing something.
> >
> > Here is my fallback func:
> >
> > (define (deserialize-fallback id)
> >   (cond ((string=? id "f_3497library.scm") ; chicken-2.315
> >          equal?)
> >         ((string=? id "f_6914extras.scm") ; chicken-2.315
> >          hash)
> >         (else
> >          (error "deserialize-fallback unknown id" id))))
> >
> > What is missing?
> >
>
> I haven't seen your error-message yet.
> (But note that this is likely to fail, since the ID will probably be re-used
> and now name different procedures. This approach is not safe).
>
>
> cheers,
> felix
> --
> http://galinha.ucpel.tche.br:8081/blog/blog.ssp
>





reply via email to

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