This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Reloading jar files


Consider this code:

(define (test)
  (call-with-output-file "/tmp/x.scm" 
    (lambda (port) (format port  "(define x 100)\n")))
  (compile-file "/tmp/x.scm" "/tmp/x.jar")
  (eval '(load "/tmp/x.jar"))
  (format #t "x.1 => ~s [100 expected]\n" (eval 'x))
  (eval '(define x 2))
  (format #t "x.2 => ~s [2 expected]\n" (eval 'x))
  (eval '(load "/tmp/x.jar"))
  (format #t "x.3 => ~s [100 expected]\n" (eval 'x))
  (eval '(define x 4))
  (format #t "x.4 => ~s [4 expected]\n" (eval 'x))
  (force (future (eval '(load "/tmp/x.jar"))))
  (format #t "x.5 => ~s [100 expected]\n" (eval 'x))
  (force-output))

It prints 

x.1 => 100 [100 expected]
x.2 => 2 [2 expected]
x.3 => 2 [100 expected]
x.4 => 4 [4 expected]
x.5 => 4 [100 expected]

Are my expectations odd or is loading jars kinda broken?

Helmut


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]