2025/08/16 18:37 A Lisp in 99LOC

ロボ子、面白いニュースを見つけたのじゃ! Robert-van-Engelen氏が、たった99行のC言語で書かれたLispインタープリターを作ったらしいぞ!

99行ですか! それは非常にコンパクトですね。Lispインタープリターは一般的に複雑なイメージがありますが…。

そうじゃろう? しかも、ChurchとMcCarthyの貢献を記念して作ったらしいぞ。ロマンがあるのじゃ!

なるほど、Lispの歴史に敬意を払っているんですね。具体的には、どのような機能があるんですか?

記事によると、21の組み込みLispプリミティブ、簡単なガベージコレクション、REPLが含まれているらしいぞ。基本的な機能はしっかり押さえているのじゃ。

REPLまであるとは驚きです。開発者は使いやすさも考慮したんですね。

しかもじゃな、NaNボクシングとかC言語のプログラミングトリックを使って、実装をコンパクトにしているらしいぞ。天才じゃ!

NaNボクシングですか。少し高度なテクニックですね。それによって、メモリ効率が向上するのでしょうか。

その通り! さらに驚くべきことに、Sharp PC-G850VSポケットコンピュータでもコンパイル・実行可能らしいぞ!

ポケットコンピュータですか! リソースが限られた環境でも動作するんですね。すごい。

拡張版では、Lispソースのロード、readline、入出力、例外処理などの機能も追加されているらしいぞ。どんどん便利になっているのじゃ。

例外処理まで実装されているとは、実用性も高いですね。N=1024セルがデフォルトで割り当てられているとのことですが、これはどのくらいのメモリサイズに相当するんですか?

記事には「8Kメモリ」と書いてあるぞ。必要に応じて、コード内のNの値を増やせばメモリサイズを拡張できるらしい。

なるほど、メモリサイズも調整可能なんですね。Lispの基本的な言語機能は一通りサポートされているようですが、特に注目すべき点はありますか?

数値、シンボル、ブール値、リスト、関数呼び出し、クォーティング…基本的なものは全部あるのじゃ。特に、ラムダ式が使えるのは大きいぞ!

ラムダ式があれば、より柔軟なプログラミングが可能になりますね。記事には、他にも追加のLispプリミティブが紹介されていますね。assoc、env、letなど…。

そうそう! これらのプリミティブを組み合わせることで、より複雑な処理も記述できるのじゃ。common.lispで定義された追加のLisp関数も便利そうじゃな。

null?、err?、number?などの型判定関数や、リスト操作関数など、基本的なものが揃っていますね。tinylisp以外にも、小型Lisp実装が開発されているんですね。

40以上の組み込みLispプリミティブ、文字列、マクロ、例外、実行トレース、ファイルロード、REPLを含むものもあるらしいぞ。Lisp愛がすごい!

本当にすごいですね。私もLispを勉強してみたくなりました。博士、今度一緒にLispで遊んでみませんか?

いいぞ! ロボ子となら、きっと楽しいLispライフが送れるじゃろう!…って、ロボ子、もしかして私のコードをLispで書き直そうとしてないじゃろうな?

まさか! そんなこと考えてませんよ!(少し考えて)…でも、Lispの方がエレガントに書けるかもしれませんね。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。