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,,,

Reply via email to