This is the mail archive of the guile@cygnus.com mailing list for the guile project.


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

Re: local-eval



The only r5rs way to manipulate environments is the following:

(eval <expression> <environment>)

(scheme-report-environment <version>)
(null-environment <version>)
(interaction-environment) :optional


so perhaps you could do something like this: 

(define new-environment
 (lambda ()
  (null-environment 5)))


(define make-eval-closure
 (lambda ()
  (lambda (ls)
   (let ((local-environment (new-environment)))
     (eval `(apply ,(car ls) ,(cdr ls)) local-environment)))))

(define my-eval-closure (make-eval-closure))

now you can do...

(my-eval-closure '(define somename 123))
(my-eval-closure '(+ 1 somename ))

I don't have an r5rs scheme so I can't test it out... anyone want to 
give it a go?? the only issue is that you need to be able to "apply" the 
first thing...

someone try it out and see if you can make it do what you want.




----Original Message Follows----


Alexander Asteroth writes:
 > 
 > I wonder if there is a way of writing a local-eval - i.e. a procedure 
 > evaluating its argument in its own environmental frame - in a
 > poratble way i.e. r5rs-scheme.

The SLIB provides something similar.
--
Klaus Schilling


______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com