我正在学校学习Scheme语言并试图使用error
函数来处理角落案例。当我尝试this code from a similar question时,我得到了一个
错误Error: execute: unbound symbol: "error" [in?]
而不是打印错误消息。
这是上面链接的示例代码:
(define in?
(lambda (el lst)
(if (or (null? lst) (pair? lst))
(if (null? lst)
#f
(if (equal? (car lst) el )
#t
(in? el (cdr lst))))
(error "ERROR"))))
输入和输出应该是:
(in? 1 '(2 5 3))
=> #f
(in? 3 '(2 5 3))
=> #t
(in? 1 5)
=> ERROR
但是,我得到了:
(in? 1 5)
Error: execute: unbound symbol: "error" [in?]
我正在使用repl.it在线编译器来编译Scheme代码。 任何人都知道为什么错误功能没有定义?我是否想定义自己的错误函数?如果是这样,有人能给我一个简单的例子来展示编写错误函数的基本风格吗?我从MIT Scheme Error System读到了参考文献,但我感到很遗憾。
答案 0 :(得分:1)
就Scheme标准而言,没有名为error
的程序或特殊表格。我已经在MIT Scheme中尝试了它,当然它已经被定义了,当使用时发出错误但在repl.it中,Scheme实现被称为BiwaScheme并且它与MIT Scheme锁不兼容
BiwaScheme doesn't seem to fully support any Scheme standard所以我建议你不要使用它。
我强烈建议您在学习Scheme时使用兼容的Scheme实现到当前标准之一。