On Nov 12, 2008, at 12:00 PM, leppie wrote:
Maybe if I see what you come up with, I can see how it would work?
Here's an example of why it's broken now under Ikarus. Can you
check how it works under IronScheme?
$ cat A.ss
(library (A)
(export inc)
(import (ikarus))
(define inc
(let ([v 0])
(lambda ()
(set! v (+ v 1))
v))))
$ cat B.ss
(library (B)
(export get)
(import (A) (ikarus))
(define tmp (inc))
(define get (lambda () tmp)))
$ rlwrap ikarus
Ikarus Scheme version 0.0.3+ (revision 1670, build 2008-11-11)
Copyright (c) 2006-2008 Abdulaziz Ghuloum
> (import (B))
> (get)
1
> (define get1 get)
> (get1)
1
> (uninstall-library '(B))
> (import (B))
> (get)
2
> (get1)
1
> ^D
$ cat > dep.ss
(import (B))
^D
$ ikarus --compile-dependencies dep.ss
Serializing "./B.ss.ikarus-fasl" ...
Serializing "./A.ss.ikarus-fasl" ...
$ rlwrap ikarus
Ikarus Scheme version 0.0.3+ (revision 1670, build 2008-11-11)
Copyright (c) 2006-2008 Abdulaziz Ghuloum
> (import (B))
> (get)
1
> (define get1 get)
> (get1)
1
> (uninstall-library '(B))
> (import (B))
> (get)
2
> (get1)
2 ;;; BROKE GET1
> ^D
Aziz,,,