2

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

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

没有工作。你如何停止程序执行?

4

3 回答 3

2

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

虽然这确实引发了第二个(不相关的)错误,但它肯定会停止程序执行。

于 2009-03-23T20:11:02.193 回答
0

您是否有理由需要使用 R5RS?DrScheme 中的其他语言定义定义errorexit. 例如,(module ...)PLT 语言定义errorexit. 从命令行调用mzscheme也会为您提供这些定义。

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

于 2009-03-23T22:24:37.317 回答
0

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

于 2015-03-09T12:07:57.940 回答