我正在尝试使用emacs中的geiser-mode来运行球拍代码。我已经能够安装geiser-mode并启动了球拍。
然而,当我运行一个定义两次时,我得到了以下错误。此名称以前已定义,不能重新定义
下面是一个简单的例子
(define a (* 1 4))
a运行两次
在调试器中
#a: this name was defined previously and cannot be re-defined
#in: a发布于 2015-02-11 03:01:06
racket在文件和REPL中的行为似乎不同。这个文件将抛出一个错误:
#lang racket
(define a 5)
(define a 6)这个REPL会话不会:
> (define a 5)
> a
5
> (define a 6)
> a
6这种行为是由于modules的工作方式造成的。在处理文件时,有一个隐式模块。一旦在该模块中定义了符号a,就不能在该模块中定义另一个同名的符号。REPL只是简单地expands forms,没有modules的所有仪式。
https://stackoverflow.com/questions/28395049
复制相似问题