haw*_*eye 14 scheme guile r6rs racket r5rs
我有一堆"传统"Guile Scheme代码,我想在Racket Scheme IDE中运行.似乎有足够的差异使这成为一项非平凡的工作.(我的计划知识水平是完成The Little Schemer的水平).
我的问题是:
附加:(对Racket Scheme和R5RS/R6RS之间的分歧感到满意) - 我想要的是在Racket IDE中运行'某些东西 - 而不是Racket语言.
如果通过"标准方案(在Racket IDE中)",你的意思是Racket语言,即你在代码前加上时得到的东西,#lang racket,那么要注意的前四个差异是:
when)要将代码从Guile移植到Racket,请找出哪些文件位于依赖项的"底部",即查找不依赖于其他文件的文件.在Racket中打开这样的文件,在顶部添加#lang球拍线,然后尝试运行它.
您很可能会遇到一些"未绑定的标识符"错误.如果幸运的话,该功能存在于Racket中,但不包含在"球拍"语言中.在Racket文档中搜索名称,如果找到,则使用(require ...)将名称导入程序.
然后再次运行程序以查找下一个错误.
某些功能在Guile和Racket中的命名方式不同,因此请在Guile文档中查找名称并查看其功能.然后打开关于同一主题的Racket文档,看看在Racket中调用它的内容.
在某些情况下,您可能需要进行更大的更改.如果您在Racket文档中找不到某些功能,请尝试询问邮件列表.它可能只是有一个不同的名称,或者有人实现它并将其放在PLaneT上(因此在安装软件包之前它不会出现在文档中).
将srfi/1导入R5RS语言的示例.
#lang r5rs
(#%require srfi/1)
(xcons 1 2)
Run Code Online (Sandbox Code Playgroud)
R4RS代码与现代方案的区别?
需要注意的一点是,在R4RS中,空列表'()计为false,而不是被解释为true.
有关更多要注意的事项,请参阅此问题:
另请参阅R5RS标准中的此更改列表: 从R4RS到R5RS的更改列表