Christian Queinnec写了一本名为LISP的杰作,其中有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)这些系统当时采用的是甚麽系统,而更重要的是;
(b)这些系统今天会在甚麽系统上运作?
发布于 2012-05-02 06:44:20
里面有很多程序。我做了一些测试,看看我可以在不单独尝试的情况下回答这个问题。tarball中有131个扩展名为".scm“的文件。然而,似乎有一些方案程序具有其他扩展名,如.bgl。因此,我搜索了前五行中包含“L I S P”的文件。这样就产生了173个文件。我试着在my preferred Scheme implementation上运行所有这些代码。其中31个运行时没有错误。几乎所有这些都在"src“目录中。因此,特定于语言的程序看起来确实是特定于语言的。让我们看一下失败的src/文件之一"chap9z.scm“。它被define-abbreviation卡住了。我不知道这个符号的起源,但在guile中没有定义它。但它的所有用法都可以由guile的syntax-rules执行。
发布于 2012-04-30 23:09:41
1994年存在的一些方案实现仍然存在并得到维护:Scheme 48、Chez Scheme、Gambit、Bigloo、MIT Scheme和SCM。
来自LiSP的代码可能会在其他现代方案系统(如Guile或Larceny )中运行。
就我个人而言,我建议使用Racket。最有可能的是,大部分代码无需更改就可以在#lang racket中运行,并且不需要使用[] (但您的代码可能更易于阅读:)。不能工作的东西可能很容易修复,您还可以使用code提供的R5RS语言实现,它很可能适用于所有代码。
发布于 2014-06-25 08:48:03
(a)这些系统当时运行在什么方案上
来自作者网站的source tarball中的Makefile具有在bigloo、elk、gambit、mit-scheme、scheme2c和scm下运行代码的目标。
Makefile提到SCM 4e1和Bigloo 1.9d是已知的工作版本,尽管我还没有亲自测试过它们。我没有发现任何关于其他方案的具体版本的提及。
(b)今天这些系统将在什么计划系统上运行?
this github repo中的代码已经更新,因此包含的测试套件中的几乎所有测试都通过了bigloo、gambit和mit-scheme的当前(截至2014年6月)版本。
如果您只是希望能够运行代码并按照书中的说明进行操作,那么这些方案中的一个应该对您有效。
[完全披露:我是回购的所有者,我是计划菜鸟。回购中的代码已通过WOMM认证,但您的里程数可能会有所不同。]
另一方面,如果你不满足于使用bigloo / gambit / mit-scheme,那么在这里添加对guile / racket /insert-favorite-scheme的支持应该不会太难。使用其中一个book.*文件作为起点,例如gambit/book.scm或mitscheme/book.mit。如果您可以将某个版本的book.scm加载到您喜欢的方案中,那么可以查看test.interpreters make目标,最后是grand.test目标,以验证它是否按预期工作。
https://stackoverflow.com/questions/10362400
复制相似问题