7

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.

Yun
  • 3,056
  • 6
  • 9
  • 28
wiwo
  • 721
  • 1
  • 13
  • 18
  • DrRacket is an IDE that supports many different and often incompatible languages. You need to know which language to set. Scheme is not one language since we have many incompatible reports and lots of languages that are not completely compatible, like #!racket (one language only supported by DrRacket) Lisp is an even more diverse group as it's everything with parenthesized polish prefix notation. – Sylwester Jun 12 '14 at 08:52

1 Answers1

12

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
Óscar López
  • 232,561
  • 37
  • 312
  • 386