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

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

出典: https://github.com/codr7/eli
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

確かに、ちょっと似ていますね。でも、エリマキトカゲはLispを解釈できませんよ、きっと。

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

Search