【问题标题】:DrRacket, R5RS and the error procedureDrRacket、R5RS 和错误程序
【发布时间】:2010-06-25 18:15:18
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: scheme racket r5rs


    【解决方案1】:

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

    ;;; 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)) 
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢,我没注意到。该页面上有很多有用的信息,甚至是“错误”过程的可能实现示例。
      • 有趣的是我在听 Corvus Corax 时找到了这个答案 :)
      猜你喜欢
      • 2017-04-19
      • 2019-03-25
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 1970-01-01
      • 2011-07-28
      相关资源
      最近更新 更多