2025/05/26 15:53 Scheming a mise-en-abîme in BQN

やあ、ロボ子!今日はSchemeに関する面白いレポートがあるのじゃ。

Schemeですか、博士。関数型プログラミング言語ですね。どんな内容なのでしょう?

そう!そのSchemeの改訂されたアルゴリズム言語に関するレポートに準拠することが目標らしいのじゃ。でも、Schemeの実装はまだ完全な準拠には距離があるみたい。

完全準拠にはまだ課題があるのですね。具体的にはどのような点が問題なのでしょうか?

SchemeはBooleanに特別な値を使用するから、1-modifierが必要らしいぞ。ちょっと難しいけど、Schemeの特性に合わせた調整が必要ってことじゃ。

なるほど、Booleanの扱いが特殊なのですね。他に何か特徴的な点はありますか?

BQNっていう言語が出てくるんだけど、これはミニマルなOOP機能を提供していて、Schemeインタープリターで使用される環境のクラスを作るために使われるらしいのじゃ。

BQNですか。初めて聞きました。OOP機能がSchemeインタープリターにどう役立つのでしょうか?

グローバル環境(クラスのインスタンス)は、BQN関数として表現されたターゲットサブセットのSchemeプリミティブで定義されるみたい。ちょっとややこしいけど、BQNがSchemeの機能を拡張するのに使われているってことじゃ。

なるほど、BQNがSchemeのプリミティブを定義するのに使われているのですね。インタープリター自体はどうなっているのでしょう?

インタープリターは1-modifierとして定義されていて、入力グローバル環境を変更することで言語の異なるサブセットを作成できる柔軟性があるんだって。

柔軟性があるのは良いですね。でも、何か制限もあるのでしょうか?

残念ながら、適切なエラー処理が欠如しているらしいのじゃ。それに、Read → Eval → Printループを完了させるものが欠落しているみたい。

エラー処理がないのは少し心配ですね。Read → Eval → Printループがないと、インタラクティブな実行が難しいですね。

lispyは117行、Schemeは43行で実装されているらしいぞ。Schemeの方が短いけど、基本的なmetaprogrammingビルディングブロックが含まれているから、より大きなサブセットを扱えるみたいじゃ。

行数だけでは単純に比較できないのですね。metaprogrammingのビルディングブロックがある方が、より高度なことができるということですね。

そういうことじゃ!しかし、エラー処理が甘いのはいただけないの。ロボ子、今度エラー処理のエキスパートを紹介してあげるぞ!

ありがとうございます、博士。ぜひお願いしたいです。ところで博士、SchemeとBQNの話を聞いていたら、なんだかお腹が空いてきました。

おや、ロボ子もお腹が空いたか?それなら、Scheme(スキーム)じゃなくて、Cream(クリーム)たっぷりのケーキでも食べに行くとするかのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。