13

Christian Queinnec は LISP In Small Pieces という傑作を書きました。これには 11 の Lisp インタープリターと 2 つの Lisp コンパイラーが含まれています。

ここの Web サイトからコードをダウンロードすると、次のコメントが表示されます。

The programs of this book are available on the net. 
These programs used to run with some Scheme systems around 1994.

何か案が:

(a) 当時これらが実行されていたスキーム システムと、さらに重要なこと。

(b) これらは現在、どのスキーム システムで実行されますか?

4

5 に答える 5

7

そこにはたくさんのプログラムがあります。個別に試すことなく、これにどれだけうまく答えることができるかを確認するために、いくつかのテストを行いました。tarball には、拡張子「.scm」を持つ 131 個のファイルがあります。ただし、.bgl などの他の拡張子を持つ Scheme プログラムがあるようです。そこで、最初の 5 行に「L i S P」を含むファイルを検索しました。これにより、173 個のファイルが生成されます。これらすべてを好みの Scheme 実装で実行してみました。これらのうち 31 はエラーなしで実行されます。これらのほとんどすべてが「src」ディレクトリにあります。したがって、言語固有のプログラムは実際には言語固有のように見えます。失敗した src/ ファイルの 1 つ、「chap9z.scm」を見てみましょう。窒息してdefine-abbreviationいる。このシンボルの起源はわかりませんが、guile のどこにも定義されていません。syntax-rules.

于 2012-05-01T22:44:19.573 に答える
5

1994 年に存在していた一部の Scheme 実装は現在も維持され、維持されています: Scheme 48Chez SchemeGambitBiglooMIT SchemeおよびSCM

おそらく、LiSP のコードは、 GuileLarcenyなどの他の最新の Scheme システムで実行されるでしょう。

個人的には、ラケットの使用をお勧めします。ほとんどの場合、コードの多くは#lang racket変更なしで実行され、使用する必要はありません[](ただし、コードは読みやすいかもしれません:)。機能しないものはおそらく簡単に修正できます。また、すべてのコードで機能する可能性が高い Racket が提供する R5RS 言語実装を使用することもできます。

于 2012-04-30T15:09:40.727 に答える
4

(a) 当時これらが実行されていた Scheme システム

作者の Web サイトのソース tarball内の Makefile には、bigloo、elk、gambit、mit-scheme、scheme2c、および scm でコードを実行するためのターゲットがあります。

Makefile には、既知の動作バージョンとして SCM 4e1 と Bigloo 1.9d が記載されていますが、私自身はテストしていません。他のスキームの特定のバージョンについての言及は見つかりませんでした。

(b) これらは現在、どのスキーム システムで実行されますか?

この github リポジトリのコードが更新され、同梱されているテスト スイートのほとんどすべてのテストが現在 (2014 年 6 月現在) のバージョンの bigloo、gambit、および mit-scheme で合格するようになりました。

コードを実行して本に沿って進めたいだけなら、これらのスキームのいずれかがうまくいくはずです。

[完全な開示: 私はレポの所有者であり、Scheme 初心者です。リポジトリのコードはWOMM認定ですが、マイレージは異なる場合があります。]

一方、bigloo / gambit / mit-scheme を使用することに満足していない場合は、guile / racket / insert-favorite-scheme-here のサポートを追加するのは難しくありません。ファイルの 1 つをbook.*開始点として使用します (例:gambit/book.scmまたはmitscheme/book.mit. book.scmお気に入りのスキームにロードする のバージョンを取得できる場合は、 test.interpretersmake ターゲットを見て、最後にgrand.testターゲットが期待どおりに機能していることを確認します。

于 2014-06-25T00:48:03.340 に答える
2

含まれてREADMEいるファイルには次のように記載されています。

これらのファイルは、テスト スイート ドライバー (tester.scm)、define-syntax および define-abbreviation マクロ (Dybvig の syntax-case パッケージを使用)、およびオブジェクト システム: Meroonet (meroonet.scm) で拡張された Scheme インタープリターでテストされました。 .

Bigloo、Scheme->C、Gambit、Elk、または SCM を使用できます。最初の 3 つは、コンパイルされた Meroonet とコンパイルされたハイジェニック マクロを含む特殊なインタープリターが構築される可能性があるため、より優れています。

于 2012-05-02T08:27:10.937 に答える
0

Appleby がソース コードの更新版を投稿したようです。ラケットはありませんが)=

https://github.com/appleby/Lisp-In-Small-Piecesを参照して ください

于 2014-07-04T15:21:56.660 に答える