在+
使用guile
. 我应该指出,这是在尝试理解语言时发生的;这里没有尝试编写有用的程序。
这是代码:
(define (f a b) 4)
(define (show)
(display (+ 2 2)) (display ",") (display (f 2 2)) (newline))
(show)
; guile & mit-scheme: "4,4"
(define (+ a b) 5)
(define (f a b) 5)
(show)
; mit-scheme: "5,5"
; guile: "4,5" - this "4" is the unexpected result
(define (show)
(display (+ 2 2)) (display ",") (display (f 2 2)) (newline))
(show)
; guile & mit-scheme: "5,5"
即使在我重新定义它之后,guile
该函数仍show
使用 的预定义定义,尽管它使用. 我必须重新定义才能识别. 在这两个新定义中都会立即得到认可,这是我所期望的。此外,两个解释器都会立即识别 的任何进一步定义,而无需重新定义.+
f
show
+
mit-scheme
+
show
幕后发生了什么guile
使它以不同的方式绑定到这些重新定义的运算符的引用?
为什么两个解释器之间存在差异?