代码之家  ›  专栏  ›  技术社区  ›  Flux

plt-r5rs中未定义“错误”程序

  •  0
  • Flux  · 技术社区  · 5 年前

    我把这个文件命名为 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 程序。

    0 回复  |  直到 5 年前
        1
  •  0
  •   LiberalArtist    5 年前

    为什么作者 plt-r5rs 不定义 error 程序?

    看来 The Revised 5 Report on the Algorithmic Language Scheme 未定义名为的过程 错误 初始环境由 plt-r5rs 仅包含报告中定义的值和语法形式(少数特定于实现的形式除外 listed in the docs ,比如 #%require ,根据R,它们不是合法标识符 5. RS)。

    如何定义或导入 错误 程序可以运行吗?也许有办法导入SRFI-23 错误报告机制 ?

    如你所知,R 5. RS也没有定义模块系统,因此没有可移植的方法来导入任何内容。For plt-r5rs 具体来说,这个版本的程序可以工作:

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

    当然,如果你依赖的是细节 plt-r5rs 已经,我建议只使用Racket,或者至少R 6. RS。