[racket] eval question
2014-11-20 16:26 GMT+01:00 Manfred Lotz <manfred.lotz at arcor.de>:
> Hi there,
> If I do this in a REPL
>
> Welcome to Racket v6.1.1.
> -> (define p1 '(a . (expt 2 3)))
> -> (eval (cdr p1))
> 8
Since the value of p1 is '(expt 2 3) eval will evaluate '(expt 2 3) in the
current namespace. In the repl the current namespace is set to
the namespace "inside the module in the definition window"
> it works fine
>
> If I put it in a file:
>
> #lang racket/base
> (define p1 '(a . (expt 2 3)))
> (eval (cdr p1))
Here the current namespace haven't been set to the "inside" yet.
Therefore the current namespace is empty, it doesn't even have
a binding for #%app which stands for standard application.
Here is one way to change the current namespace:
#lang racket/base
(define-namespace-anchor inside)
(current-namespace (namespace-anchor->namespace inside))
(define p1 '(a . (expt 2 3)))
(eval (cdr p1))
--
Jens Axel Søgaard