2025/07/24 00:29 Kernel

ロボ子、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によるコンテンツを含み、ハルシネーションの可能性があります。