DrRacket中的随机函数

Jas*_*nLi 7 scheme racket

我目前在Mac OS X上使用DrRacket并选择语言"R5RS",但是当我进入时

(random 100)
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

reference to undefined identifier: random
Run Code Online (Sandbox Code Playgroud)

这有什么问题?它是由缺少包裹引起的吗?

soe*_*ard 10

正如dyoo指出的那样,该功能random未在R5RS中定义.如果要在DrRacket中使用R5RS语言中的"外部"函数,可以使用#%require它们进行导入.

在这种情况下,random在Racket文档中搜索.请注意,它random是模块的一部分racket/base.现在写:

(#%require (only racket/base random))
(random 10)
Run Code Online (Sandbox Code Playgroud)

使用only确保您只导入函数random和任何其他非R5RS构造racket/base.


dyo*_*yoo 7

"随机"是R5RS提供的功能吗?我在规范的索引中查找它,但我没有在那里看到它.R5RS是一种最小语言模式,当Racket处于R5RS模式时,它确实限制了自己.

Racket确实具有原生随机功能.如果你使用'#lang racket',它会自动使用.你有没有理由使用R5RS语言模式?