guile-devel
[Top][All Lists]
Advanced

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

Re: Eval, tail calls, (current-module), and backward compatibility


From: Ludovic Courtès
Subject: Re: Eval, tail calls, (current-module), and backward compatibility
Date: Wed, 18 Jan 2012 22:18:56 +0100
User-agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.90 (gnu/linux)

Hi Mark,

Mark H Weaver <address@hidden> skribis:

> The problem is that `eval' uses dynamic-wind to temporarily set
> (current-module) during the dynamic extent of the expansion and
> evaluation of its form.

Excuse my ignorance, but where is this?  :-)

What I see doesn’t seem to correspond to this description:

        (('apply (f args))
         (apply (eval f env) (eval args env)))


> Can we fix this?
>
> Ideally, I think that `eval' should set (current-module) during
> expansion, but _not_ during evaluation.  Then it can be properly tail
> recursive.  However, some code out there might depend on the existing
> behavior, so I guess we can't change this, at least not in 2.0.  Bummer.

Why?

How does 1.8’s CEVAL behave?

It would be good to have test cases written against 1.8 that illustrate
the behavior of (current-module) in different contexts.  Then we could
see whether/how the same behavior can be achieved in 2.0.

WDYT?

Thanks,
Ludo’.




reply via email to

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