[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: eval
From: |
Neil Jerram |
Subject: |
Re: eval |
Date: |
06 Feb 2001 01:03:37 +0000 |
>>>>> "Marius" == Marius Vollmer <address@hidden> writes:
Marius> What is wrong with this:
Marius> Conceptually, we should probably isolate the
Marius> current-module from eval. We should have
Marius> `with-current-module' and `eval-in-current-module' [I like
Marius> long names], and `eval' would be
Marius> (define (eval exp env) (with-current-module env
Marius> (eval-in-current-module exp)))
Marius> The repl would use `eval-in-current-module'.
Yes, this -- with your subsequent explanation of its relation to the
`current-module' fluid -- is much nicer. I presume that
`(interaction-environment)' will continue to be the same as
`(current-module)'.
For the sake of analysis, I think the difference between this and
my/Dirk's approach is that Dirk and I were trying to find a way of
making expressions like
(eval '(define-module (xyzzy))' <some environment>)
work sensibly, whereas your solution uses `eval-in-current-module' to
avoid the issue. In retrospect, I suspect that expressions like this
one are fundamentally meaningless, so it is wise to avoid them!
One more thing. I think that some confusion in this discussion may
have come from the mixing of the terms "environment" and "module".
All the questions that we have been discussing are concerned with
switching the top level environment in which the evaluator evaluates
an expression, which is more general than the way Guile implements
modules. To this end, I'd personally be happier if we used
"environment" rather than "module" in the proposed names:
eval-in-current-environment
current-environment
with-current-environment
call-with-current-environment
and, everywhere that a module is used as an environment, change
... m ...
to
... (module-environment m) ...
with
(define (module-environment m)
;; In the current module system implementation,
;; a module is the same as its top level environment,
;; but that may not always be the case.
m)
But I'd be surprised if we hadn't discussed this question before :-)
Regards,
Neil
- Re: eval, (continued)
- Re: eval, Neil Jerram, 2001/02/10
- Re: eval, Dirk Herrmann, 2001/02/11
- Re: eval, Neil Jerram, 2001/02/12
- Re: eval, Marius Vollmer, 2001/02/12
- Re: eval, Neil Jerram, 2001/02/13
- Re: eval, Marius Vollmer, 2001/02/13
- Re: eval, Michael Livshin, 2001/02/14
- Re: eval, Neil Jerram, 2001/02/14
- Re: eval, Marius Vollmer, 2001/02/09
- Re: eval, Marius Vollmer, 2001/02/08
Re: eval,
Neil Jerram <=