将 DrScheme 与 R5RS 一起使用时,没有错误功能。我打算自己写,但不知道如何停止程序执行。我尝试了以下命令:
- (停止)
- (出口)
- (错误)
没有工作。你如何停止程序执行?
SLIB(可移植方案库)具有 ERROR 的实现。你可能想看看那个,或者在你的程序中使用 SLIB。
除此之外,停止程序的一种方法就是引发不同的错误!尝试这样的事情(感谢Stephen Houben):
(define (error reason . args)
(display "Error: ")
(display reason)
(for-each (lambda (arg)
(display " ")
(write arg))
args)
(newline)
(scheme-report-environment -1)) ;; we hope that this will signal an error
虽然这确实引发了第二个(不相关的)错误,但它肯定会停止程序执行。
您是否有理由需要使用 R5RS?DrScheme 中的其他语言定义定义error
和exit
. 例如,(module ...)
PLT 语言定义error
和exit
. 从命令行调用mzscheme
也会为您提供这些定义。
注意:我有 DrScheme 372,它已经很老了。不过,事情不应该发生太大变化。
一个丑陋的解决方案是将 abort 定义为运行时错误。例如
,如果您的幸运甚至显示字符串、错误代码或您关心的任何内容,
(define abort "the program was aborted")
(define abort 123)
(define abort #f)
任何对 abort 的调用都
(abort)
应该会产生运行时错误。