2012-02-29 12 views
7

actualmente estoy usando DrRacket en Mac OS X y elegir el idioma "R5RS", pero cuando entrofunción aleatoria en DrRacket

(random 100) 

consigo el mensaje de error:

reference to undefined identifier: random 

¿Cuál es la problema aquí? ¿Es causado por un paquete perdido?

+0

También probé enteros aleatorios y flotación aleatoria, pero obtuve la misma respuesta. – JasonLi

+0

Encontré la solución, el paquete está disponible en PLaneT. – JasonLi

Respuesta

7

¿Es 'aleatorio' una función proporcionada por R5RS? Lo busco en el índice de spec, pero no lo veo allí. R5RS es un modo de lenguaje mínimo, y cuando Racket está en modo R5RS, realmente se restringe a sí mismo.

Racket tiene una función nativa random. Si está utilizando '#lang racket', está automáticamente disponible. ¿Hay alguna razón por la que está utilizando el modo de lenguaje R5RS?

10

Como señala dyoo, la función random no está definida en R5RS. Si desea utilizar funciones "extranjeras" en el lenguaje R5RS en DrRacket, , puede usar #%require para importarlas.

En este caso, busque random en la documentación de la Raqueta. Observe que random es parte del módulo racket/base. Ahora escribe:

(#%require (only racket/base random)) 
(random 10) 

Usando only asegurarse de que sólo importa la función random y cualquier otro no R5RS construyen presente en racket/base.