guile-devel
[Top][All Lists]
Advanced

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

Re: guile-vm 0.4


From: Keisuke Nishida
Subject: Re: guile-vm 0.4
Date: Tue, 10 Apr 2001 17:44:52 -0400
User-agent: Wanderlust/2.4.0 (Rio) SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) Emacs/21.0.102 (i686-pc-linux-gnu) MULE/5.0 (SAKAKI)

At 10 Apr 2001 14:04:06 -0500,
Rob Browning wrote:
> 
> So presuming this is a no-no, what are the rules for combining
> byte-compiled and non-byte-compiled code?  Is that supposed to work?

They should work together in most cases.  The only case that
is not work is tail-recursive calls.  For example, the following
code causes a problem:

  (let loop ()
    (catch #t
      (lambda () (loop))
      (lambda val val)))

Here, `catch' is a primitive procedure, and `loop' is a vm program.
Although `loop' is supposed be tail-called, it actually calls a new
vm and consumes the vm stack.  I'm not going to fix this right now
because it's not a big problem for the moment.

(BTW, Guile does not support it, either:

guile> (let loop () (catch #t (lambda () (loop)) (lambda val val)))
$1 = (stack-overflow #f "Stack overflow" #f #f)

Is this supposed?)

Keisuke



reply via email to

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