This is answered in the Racket Guide, see section 15.1. The reason is that you need to provide a namespace (which in the interaction mode is already initialized).
So if you do: #lang racket/base (define ns (make-base-namespace)) ; create namespace (define p1 '(a . (expt 2 3))) (eval (cdr p1) ns) ; pass it to eval it works. -- Éric > On Nov 20, 2014, at 12:26 PM, Manfred Lotz <manfred.l...@arcor.de> wrote: > > 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 > > it works fine > > If I put it in a file: > > #lang racket/base > (define p1 '(a . (expt 2 3))) > (eval (cdr p1)) > > I get this: > > expt: unbound identifier; > also, no #%app syntax transformer is bound > at: expt > in: (expt 2 3) > context...: > /home/manfred/tmp/test.rkt: > [running body] > > > What am I doing wrong? Sorry, if this is a stupid question. > > > > -- > Manfred > > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users > ____________________ Racket Users list: http://lists.racket-lang.org/users