I'm learning programming in Lisp using DrRacket. I don't like it too much but I would like to pass my exam ;)
I have a weird problem - I can't use the atom?
and symbol?
functions. But number?
and string?
both work fine.
> (atom? '())
. . atom?: undefined;
cannot reference an identifier before its definition
> (symbol? A)
. . A: undefined;
cannot reference an identifier before its definition
>
Am I doing something wrong? If not, what's the problem?
I'm using DrRacket 6.0.1 on Mac.
For the first error: you have to explicitly define atom?
, because in plain Racket is not a built-in procedure (maybe it's in one of the teaching languages):
(define (atom? x)
(and (not (null? x))
(not (pair? x))))
Regarding the second error: symbol?
is defined, the error is stating that A
is undefined. Perhaps you meant this (notice the quote):
(symbol? 'A)
=> #t