【发布时间】:2011-11-19 00:29:30
【问题描述】:
在 DrRacket 中玩 Racket 时,我不小心进入了 交互窗口。
(定义 x 7)
(定义 x 8)
并且 DrRacket 允许它,即我没有得到“重复的定义 标识符错误消息。
所以为了弄清楚发生了什么我然后在 DrRacket 的定义窗口:
代码 sn-p A
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(eval '(begin (define x 7) (define x 8)) ns)
(eval 'x ns)
仍然没有“重复定义错误”。
然后我也在定义窗口中尝试了这个:
代码 sn-p B
(define x 9)
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(eval '(begin (define x 7) (define x 8)) ns)
(eval 'x ns)
我收到错误消息:cannot redefine a constant x。
有人可以向我解释为什么在定义窗口中的代码 sn-p A
(也只需在交互窗口中输入(define x 7) 后跟(define x 8))不会给我一个重复定义错误。
【问题讨论】:
-
等等...我很困惑。你不是刚刚在邮件中问过这个吗……哦……没有人回复。叹息。
-
是的,约翰,非常感谢您的回答。
-
@John:这表明,邮件列表也需要一个代表系统。 :-P
-
遗憾的是,邮件列表上的答案——在这种情况下,马修几个小时前回答了——可能要权威得多。就像在这种情况下一样。