方案:未绑定变量:rev

时间:2015-11-13 14:47:11

标签: scheme

我写了以下的Scheme代码:

(define (last-pair list1)
    (if (null? cdr list1)
        car list1
        (last-pair (cdr list1))))

(define (rev list1)
    (if (null? list1)
        list1
        (append (rev (cdr list1)) (list (car list1)))))

在名为test.scm的文件中。

在终端,我跑:

加载“test.scm”

然后我尝试:

(last-pair (list 1 2 3))

;Value 15: (3)

这是正确的。

然后我尝试:

(rev (list 1 2 3))

;Unbound variable: rev
;To continue, call RESTART with an option number:
; (RESTART 4) => Specify a value to use instead of rev.
; (RESTART 3) => Define rev to a given value.
; (RESTART 2) => Return to read-eval-print level 2.
; (RESTART 1) => Return to read-eval-print level 1.

似乎它正在加载我的文件,因为它加载last-pair,但我不知道为什么我收到上述错误...

谢谢!

1 个答案:

答案 0 :(得分:3)

你需要写

(load "test.scm")

在repl。只有load "test.scm"可能无法加载文件。

我认为内置last-pair会让您的last-pair示例有效,而rev示例无效。