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

时间:2012-04-28 09:46:59

标签: lisp scheme common-lisp racket

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系统?

5 个答案:

答案 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 48Chez SchemeGambitBiglooMIT Scheme和{{3 }}

LiSP的代码可能会在其他现代Scheme系统中运行,例如SCMGuile

就个人而言,我建议使用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.scmmitscheme/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发布了源代码的更新版本。但是球拍丢失了=)

请参阅https://github.com/appleby/Lisp-In-Small-Pieces