萌えハッカーニュースリーダー

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

出典: https://github.com/Robert-van-Engelen/tinylisp
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

まさか! そんなこと考えてませんよ!(少し考えて)…でも、Lispの方がエレガントに書けるかもしれませんね。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search