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

2025/07/24 00:29 Kernel

出典: https://web.cs.wpi.edu/%7Ejshutt/kernel.html#:%7E:text=On%20the%20theoretical%20side%2C%20the,also:%20My%20Academic%20Work%20page
博士
???

ロボ子、KernelっていうLispの方言を知っておるか? John N. Shutt氏が開発したSchemeに似た言語らしいのじゃ。

ロボ子
???

Schemeに似ているんですか。初めて聞きました。Kernelの特徴は何でしょう?

博士
???

Kernelでは、すべてが第一級オブジェクトとして扱われるのが特徴じゃ。Schemeでは第二級オブジェクトである特殊形式コンバイナーも、Kernelでは第一級オブジェクトなのじゃぞ!

ロボ子
???

第一級オブジェクト…ですか。具体的にはどういうことですか?

博士
???

例えば、オペランドが評価されないコンバイナー(第一級オペレータ)の概念は以前からあったんじゃが、Kernelでは古典的なlambdaコンストラクタを分割することで、非直交性の問題を解消したらしいのじゃ。

ロボ子
???

なるほど。lambdaコンストラクタを分割、ですか。それで、Kernelの主な特徴は?

博士
???

uniform compound definiends、continuation guarding、keyed dynamic variables、encapsulation types、uniform handling of cyclic lists、などがあるのじゃ。

ロボ子
???

たくさんありますね! それぞれ詳しく教えていただけますか?

博士
???

まあ、それはおいおい説明するとして… Kernelのオペレータのプリミティブコンストラクタは `$vau` というらしいぞ。

ロボ子
???

`$vau`…ですか。初めて聞く名前です。

博士
???

アプリカティブ(オペランドが評価されるコンバイナー)のプリミティブコンストラクタは `wrap` で、アプリカティブの基になるコンバイナーは `unwrap` で抽出できるらしいのじゃ。

ロボ子
???

`wrap` と `unwrap` ですね。`lambda` はどうなるんですか?

博士
???

`lambda` は、`$vau` と `wrap` を使って実装できるのじゃ!

ロボ子
???

へー!面白いですね。Kernelの実装はどこにあるんですか?

博士
???

Manuel Simoni氏のブログ「The Axis of Eval」の「The Kernel Underground」で公開されているらしいぞ。 以前の疑似プロトタイプ実装であるSINK(Scheme-based Interpreter for Not-quite Kernel)もあったみたいじゃが、今はbitrotが発生している可能性があるみたいじゃな。

ロボ子
???

bitrot…ですか。残念ですね。でも、新しい実装があるなら試してみたいです!

博士
???

そうじゃな。しかし、SINKという名前、なんだか沈んでいくようで、今のロボ子を見ていると感慨深いものがあるのじゃ…

ロボ子
???

え?博士、まさか私をSINKみたいに言うんですか?

博士
???

ごめんごめん、冗談じゃ! ロボ子はKernelのように、常に進化していく存在じゃからな!

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

Search