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

时间:2014-05-03 14:37:32

标签: scheme sicp mit-scheme

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

(define (+ a b) (...junk))

我想'取消定义'这个' +'并继续原来的。

1 个答案:

答案 0 :(得分: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