我写了以下的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
,但我不知道为什么我收到上述错误...
谢谢!
答案 0 :(得分:3)
你需要写
(load "test.scm")
在repl。只有load "test.scm"
可能无法加载文件。
我认为内置last-pair
会让您的last-pair
示例有效,而rev
示例无效。