在mit-scheme REPL中取消定义一个过程

Rpt*_*ptx 3 scheme sicp mit-scheme

我正在使用mit-scheme来经历SICP,昨天,我做了一些愚蠢的事情,我想知道是否有办法从中恢复,没有关闭REPL,并重新开始.如果我定义一个非工作程序,与原语同名并打破一切,有没有办法'取消'它?

(define (+ a b) (...junk))
Run Code Online (Sandbox Code Playgroud)

我想"取消定义"这个'+'并继续使用原来的'+'.

use*_*lpa 5

unbind-variable 似乎可以做到这一点:

1 ]=> (+ 1 2)    
;Value: 3

1 ]=> (define (+ a b) "nonsense")
;Value: +

1 ]=> (+ 1 2)
;Value 2: "nonsense"

1 ]=> (unbind-variable (the-environment) '+)
;Value: #t

1 ]=> (+ 1 2)
;Value: 3
Run Code Online (Sandbox Code Playgroud)