我正在使用mit-scheme来经历SICP,昨天,我做了一些愚蠢的事情,我想知道是否有办法从中恢复,没有关闭REPL,并重新开始。 如果我定义一个与原始名称相同的非工作程序并打破所有内容,那么有没有办法取消定义'它?
(define (+ a b) (...junk))
我想'取消定义'这个' +'并继续原来的。
答案 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