20

主に学習課題として、Lisp 方言で Lisp インタプリタを実装したいと考えています。私がうんざりしているのは、この分野にどれだけ多くの選択肢があるかということです. 主に、しばらく前からあるいくつかの Lisp (Scheme や Common Lisp など) について学ぶことに少し興味があります。Clojure を使用したことがあるという事実のために、これを行うために Clojure を使用したくありません。:-)

では、フレーバーの 1 つは他のフレーバーよりも解析が優れているのでしょうか? また、Scheme を Common Lisp に実装する (またはその逆) と言うのは良い考えだと思いますか? それとも、私を失望させるのに十分な違いがありますか?

それが何か違いを生むなら、クロスプラットフォームの何かが欲しい. 私は Windows PC、Mac、および Linux ボックスを持っていますが、最終的にはそれらのどれでもこれを書くことができました。

4

2 に答える 2

21

それに関するいくつかの本があります:

Anatomy of Lisp は古臭く、入手しにくく、読みにくいですが、上記の本はすべて強くお勧めします。

あなたの仕事には、Scheme と Common Lisp の両方が適しています。

Common Lisp の実装は、言語が大きいため、より大きな作業になります。新しい Common Lisp の実装に使用できる Common Lisp ライブラリがあるため、通常、Common Lisp でより適切に Common Lisp を実装します。;-)

于 2009-08-23T14:51:22.457 に答える
4

PLT スキームは、プログラミング言語、特に Lisp 言語を試すための優れたプラットフォームです。PLT には、組み込み構文を操作するためのリーダー マクロを提供する拡張可能なパーサー (通常、Scheme ではリーダーと呼ばれます) があります。または、リーダーを自分のものに完全に置き換えることができます。従来の lex/yacc スタイルのパーサーとレクサーを使用したい場合、PLT にはそれらも提供するパーサー ツール モジュールが付属しています。おまけとして、包括的なドキュメントとサードパーティ パッケージのリポジトリがあります (多くのスキームに欠けている 2 つのもの)。

Arc の参照実装 (arclanguage.org) は、Scheme にコンパイルされる言語を構築するためのかなり単純で読みやすい例です。主に PLT のリーダーを使用し、いくつかのリーダー マクロを使用して、Arc のものとは異なる Scheme 構文のビットを変更します。非 Lisp 言語の実装方法を知りたい場合は、PLT のパッケージ リポジトリ (planet.plt-scheme.org) から入手できる JavaScript 実装もあります。

于 2009-11-11T20:37:12.357 に答える