当将 DrScheme 与 R5RS 一起使用时,没有错误功能。我打算自己编写,但不知道如何停止程序执行。我尝试过以下命令:

  • (停止)
  • (出口)
  • (错误)

但没有一个起作用。如何停止程序执行?

有帮助吗?

解决方案

SLIB (可移植的Scheme库)有一个ERROR的实现。您可能想看看它,或者在您的程序中使用 SLIB。

除此之外,停止程序的一种方法就是引发一个不同的错误!尝试这样的事情(感谢 斯蒂芬·霍本):

(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 中的其他语言定义定义 errorexit. 。例如, (module ...) PLT语言定义 errorexit. 。调用 mzscheme 从命令行也给你这些定义。

笔记:我有 DrScheme 372,它已经很旧了。不过,事情不应该发生太大变化。

一个丑陋的解决方案是将 abort 定义为运行时错误。例如,其中任何一个都可以解决问题 (define abort "the program was aborted") (define abort 123) (define abort #f) 任何中止调用 (abort) 如果你幸运的话,应该会生成一个运行时错误,甚至显示字符串、错误代码或你关心的任何内容。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top