LISP In Small Pieces - 运行代码的最佳LISP环境?

haw*_*eye 13 lisp scheme common-lisp racket

Christian Queinnec写了一篇名为LISP In Small Pieces的杰作,其中包括11个Lisp Interpreters和两个Lisp编译器.

当你去从网站下载的代码在这里 -它的评论:

The programs of this book are available on the net. 
These programs used to run with some Scheme systems around 1994.
Run Code Online (Sandbox Code Playgroud)

任何的想法:

(a)当时运行的计划系统是什么,更重要的是;

(b)今天会运行哪些计划系统?

gcb*_*son 7

那里有很多节目.我做了一些测试,看看我能够在没有单独尝试的情况下回答这个问题.tarball中有131个文件,扩展名为".scm".但是,似乎有一些带有其他扩展名的Scheme程序,例如.bgl.所以我在前五行搜索了包含'L i SP'的文件.这会产生173个文件.我尝试在我首选的Scheme实现上运行所有这些.其中31个运行没有错误.几乎所有这些都在"src"目录中.所以语言特定的程序确实看起来特定于语言.让我们看一下失败的src /文件之一"chap9z.scm".这让人窒息define-abbreviation.我不知道这个符号的起源,但它并没有在诡计的任何地方定义.但它的所有用途都可以由诡计来完成syntax-rules.


Sam*_*adt 5

1994年存在的一些计划实施仍然存在并得到维护:方案48,Chez Scheme,Gambit,Bigloo,MIT SchemeSCM.

可能来自LiSP的代码将运行在其他现代Scheme系统中,例如GuileLarceny.

就个人而言,我建议使用Racket.最有可能的是,大部分代码都会在#lang racket没有更改的情况下运行,并且不需要使用[](但您的代码可能更容易阅读:).不起作用的东西可能很容易修复,你也可以使用Racket提供的R5RS语言实现,它可能适用于所有代码.


app*_*eby 5

(a) 这些当时运行在什么Scheme系统上

来自作者网站的源 tarball中的 Makefile具有在 bigloo、elk、gambit、mit-scheme、scheme2c 和 scm 下运行代码的目标。

Makefile 提到 SCM 4e1 和 Bigloo 1.9d 作为已知的工作版本,尽管我自己还没有测试过它们。我没有找到任何提及其他方案的特定版本。

(b) 这些今天将在什么计划系统上运行?

此 github 存储库中的代码已更新,因此包含的测试套件中的几乎所有测试都可以通过当前(截至 2014 年 6 月)版本的 bigloo、gambit 和 mit-scheme。

如果您只是希望能够运行代码并按照本书进行操作,那么其中一个方案应该适合您。

[全面披露:我是回购协议的所有者,也是一名计划菜鸟。存储库中的代码经过WOMM认证,但您的情况可能会有所不同。]

另一方面,如果您不满足于使用 bigloo / gambit / mit-scheme,那么在此处添加对 guile /racket / insert-favorite-scheme 的支持应该不会太难。使用其中一个book.*文件作为起点,例如gambit/book.scmmitscheme/book.mit。如果您可以获得book.scm要在您最喜欢的方案中加载的版本,请查看test.interpretersmake 目标,最后查看grand.test目标以验证事情是否按预期工作。