【问题标题】:'error' procedure is undefined in plt-r5rsplt-r5rs 中未定义“错误”过程
【发布时间】:2020-05-28 15:00:12
【问题描述】:

我有这个文件名为myprog.scm:

(error "Not found!")

使用plt-r5rs myprog.scm 运行程序会报错:

error: undefined;
 cannot reference undefined identifier
  context...:
   /usr/share/racket/pkgs/r5rs-lib/r5rs/run.rkt: [running body]

显然,plt-r5rs 没有定义 error 过程。

  • 为什么plt-r5rs 的作者没有定义error 过程?
  • 如何定义或导入error 过程以便我的程序可以运行?也许有办法导入SRFI-23 Error reporting mechanism

【问题讨论】:

标签: scheme racket r5rs


【解决方案1】:

为什么plt-r5rs 的作者没有定义error 过程?

似乎The Revised5 Report on the Algorithmic Language Scheme 没有定义名为error 的过程。 plt-r5rs 创建的初始环境仅包含报告中定义的值和语法形式(除了少数特定于实现的形式 listed in the docs,如 #%require,根据 R5,它们不是合法标识符RS)。

如何定义或导入error 过程以便我的程序可以运行?或许有办法导入 SRFI-23错误报告机制

您可能知道,R5RS 也没有定义模块系统,因此没有可移植的方式来导入任何内容。对于plt-r5rs,这个版本的程序可以工作:

(#%require srfi/23)
(error "Not found!")

当然,如果您已经依赖 plt-r5rs 的详细信息,我建议您只使用 Racket,或者至少使用 R6RS。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 2014-08-30
    相关资源
    最近更新 更多