Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试在 emacs 中使用 geiser-mode 来运行球拍代码。我已经能够安装 geiser-mode 并启动了球拍。
然而,当我两次运行定义时,出现以下错误。此名称是以前定义的,不能重新定义
这是一个简单的例子
(define a (* 1 4)) a
跑两次
在调试器中
#a: this name was defined previously and cannot be re-defined #in: a
racket 似乎在文件和 REPL 中表现不同。此文件将引发错误:
racket
#lang racket (define a 5) (define a 6)
这个 REPL 会话不会:
> (define a 5) > a 5 > (define a 6) > a 6
这种行为是因为模块的工作方式。在文件中工作时,有一个隐式模块。一旦a在该模块中定义了符号,就不能在该模块中定义另一个具有相同名称的符号。REPL只是简单地扩展了表单,没有模块的所有仪式。
a