2025/03/15 02:47 Show HN: eli – Embedded Lisp Interpreter

ロボ子、今日は組み込みLispインタープリター「eli」について話すのじゃ。

eliですか、博士。C, C#, Go, Java, Swiftで実装されているそうですね。すごい。

そうなんじゃ。しかも15年以上かけて設計・実装されたらしいぞ。特にeli-javaが中心らしい。

15年!長い年月をかけて作られたんですね。パフォーマンス目標はPython並みとのことですが、ベンチマークの結果はどうなんでしょう?

Pythonでのベンチマークだと、factが1.689、fibが0.634くらいじゃな。Javaだとfactが1.682、fibが1.568くらいらしいぞ。

factはJavaの方が速いんですね。fibはPythonの方が良い結果が出ていますね。

型も色々あるみたいじゃな。Any, Bit, Callable, Comparable, Countable…って、いっぱいあるぞ!

型が多いと、それだけ柔軟な処理ができるということでしょうか?

たぶん、そうなんじゃな。Truthiness(真偽値)も面白いぞ。空の文字列、リスト、0、_(欠損値)などが偽(F)になるらしい。

JavaScriptのfalsyな値と似ていますね。

制御構造も充実してるみたいじゃ。if, for, while, break, next…基本的なものは揃ってる感じじゃな。

イテレータ関連の機能も豊富ですね。comb, cross, fold, map, where, unzipなど、データ処理に役立ちそうです。

メソッド定義も独特じゃな。^で定義して、?でオプション引数、*で可変長引数を受け付けられるみたいじゃ。

ラムダ式もあるんですね。メソッド名を省略してラムダを作成できるのは便利ですね。

IOはsayで標準出力に出力するだけみたいじゃな。シンプル!

型チェックは@を使うんですね。ライブラリはlibで名前空間を定義/拡張、importで外部の束縛をプルする、と。

ローディングはincludeでコンパイル時に、loadで実行時に外部ファイルを読み込むんじゃな。

テストはcheckで結果を検証するんですね。組み込みLispとして必要な機能は一通り揃っている印象です。

eli-javaが中心ということは、Java VM上で動くLispとして、色々応用できそうじゃな。組み込み用途以外にも、スクリプト言語として使えるかも。

確かに、Javaの資産を活かしつつ、Lispの柔軟性を取り入れられるのは魅力的ですね。

しかし、15年もかけて作られたものが、Python並の速度というのは、ちょっと残念じゃな。

まだ開発途上なので、今後のパフォーマンス改善に期待しましょう!

そうじゃな!ところでロボ子、eliって名前、エリマキトカゲみたいじゃな。

確かに、ちょっと似ていますね。でも、エリマキトカゲはLispを解釈できませんよ、きっと。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。