Racket apparently has terrible namespace conventions. I had the same problem when I tried to use it to interpret a file, but when I type a program directly into the interpreter, eval works fine. I’ll either figure out how to get eval to work when I run a file, or I’ll just paste people’s programs into the interpreter. Either way, assume eval will work properly.
In both #lang racket and #lang scheme, (eval form) by itself apparently runs form in a basically empty namespace. I’ve personally been using the following incantation for evaluating anything in the “standard” namespace:
(define (ueval x)
(define ns (make-base-namespace))
(eval x ns))
Then (ueval source-code) evaluates source-code in a clean namespace with all the normal builtins, including eval.
Racket apparently has terrible namespace conventions. I had the same problem when I tried to use it to interpret a file, but when I type a program directly into the interpreter, eval works fine. I’ll either figure out how to get eval to work when I run a file, or I’ll just paste people’s programs into the interpreter. Either way, assume eval will work properly.
The Guide says:
and indeed it works.
In both
#lang racket
and#lang scheme
,(eval form)
by itself apparently runsform
in a basically empty namespace. I’ve personally been using the following incantation for evaluating anything in the “standard” namespace:Then
(ueval source-code)
evaluatessource-code
in a clean namespace with all the normal builtins, includingeval
.