3

我喜欢 DrRacket IDE,但目前我正在构建一个我想独立于它的宠物项目,这意味着我承诺只使用 R5RS 标准程序。

问题是,在 DrRacket 中有一个称为“错误”的程序,我想继续使用它,但我在标准中找不到它。

我想知道的是,是否有一种方法可以仅使用标准过程来模拟“错误”过程,以便代码在 Scheme 的不同实现之间可移植。

我试过“显示”,但它似乎不是我想要的,因为在输出时不会发出错误信号。

4

2 回答 2

4

这是我们的讲师给我们的实现:

;;; create binding for error
(define error #f)

;;; capture toplevel continuation
;;;  assign a function to error, allowing a variable number of arguments to
;;;  be passed
(call-with-current-continuation (lambda (k)
              (set! error
                (lambda error-arguments
                  (display ">>>> ERROR ")
                  (newline)
                  (k error-arguments)))
              'done)) 
于 2011-11-02T20:43:32.343 回答
3

好吧,根据这个:http://srfi.schemers.org/srfi-23/srfi-23.html,错误过程非常普遍,所以我认为你可以安全地使用它。

于 2010-06-25T18:21:10.023 回答