Christian Queinnec写了一篇名为LISP In Small Pieces的杰作,其中包括11个Lisp解释器和两个Lisp编译器。
当您从网站here下载代码时,它会发表评论:
The programs of this book are available on the net.
These programs used to run with some Scheme systems around 1994.
任何想法:
(a)当时运行的Scheme系统,更重要的是;
(b)今天会运行哪些Scheme系统?
答案 0 :(得分:7)
那里有很多节目。我做了一些测试,看看我能够在没有单独尝试的情况下回答这个问题。 tarball中有131个文件,扩展名为“.scm”。但是,似乎有一些带有其他扩展名的Scheme程序,例如.bgl。所以我在前五行搜索了包含'L i S P'的文件。这会产生173个文件。我尝试在my preferred Scheme implementation上运行所有这些操作。其中31个运行没有错误。几乎所有这些都在“src”目录中。所以语言特定的程序确实看起来特定于语言。让我们看一下失败的src /文件之一“chap9z.scm”。它在define-abbreviation
上窒息。我不知道这个符号的起源,但它并没有在诡计的任何地方定义。但它的所有用途都可以由guile的syntax-rules
执行。
答案 1 :(得分:5)
1994年存在的一些Scheme实现仍然存在并得到维护:Scheme 48,Chez Scheme,Gambit,Bigloo,MIT Scheme和{{3 }}
LiSP的代码可能会在其他现代Scheme系统中运行,例如SCM或Guile。
就个人而言,我建议使用Larceny。最有可能的是,大部分代码将在#lang racket
中运行而不会发生任何更改,并且不需要使用[]
(但您的代码可能更容易阅读:)。不起作用的东西可能很容易修复,你也可以使用Racket提供的R5RS语言实现,它可能适用于所有代码。
答案 2 :(得分:3)
(a)当时运行的Scheme系统
作者网站source tarball中的Makefile具有在bigloo,elk,gambit,mit-scheme,scheme2c和scm下运行代码的目标。
Makefile提到SCM 4e1和Bigloo 1.9d作为已知的工作版本,但我自己还没有对它们进行过测试。我没有找到其他方案的具体版本。
(b)今天会运行哪些Scheme系统?
this github repo中的代码已更新,因此包含的测试套件中的几乎所有测试都会通过bigloo,gambit和mit-scheme的当前(截至06/2014)版本传递。
如果您只是希望能够运行代码并按照本书进行操作,那么其中一个方案应该适合您。
[完全披露:我是回购的所有者,我是一个Scheme noob。回购中的代码已通过WOMM认证,但您的里程可能会有所不同。]
另一方面,如果您不满足于使用bigloo / gambit / mit-scheme,那么添加对guile / racket / insert-favorite-scheme-的支持就不会太难了这里。使用其中一个book.*
文件作为起点,例如gambit/book.scm
或mitscheme/book.mit
。如果您可以在自己喜欢的方案中加载book.scm
版本,那么请查看test.interpreters
制作目标,最后查看grand.test
目标,以验证事情是否按预期工作。
答案 3 :(得分:2)
包含的README
文件说明:
使用扩充的Scheme解释器测试这些文件 测试套件驱动程序(tester.scm), define-syntax和define-abbreviation宏(使用 Dybvig的语法案例包), 和对象系统:Meroonet(meroonet.scm)。
可以使用Bigloo,Scheme-> C,Gambit,Elk或SCM。前三个是 因为可以构建包含a的专用解释器,所以更好 编译了Meroonet并编译了卫生宏。
答案 4 :(得分:0)
显然Appleby发布了源代码的更新版本。但是球拍丢失了=)