設計思想

mimiumの設計思想 #

このセクションでは、mimiumのプログラミング言語としての理論的バックグラウンドについて解説します。

mimiumは、単純型付きラムダ計算(Simply Typed Lambda Calculus:STLC)と呼ばれる計算体系を独自に拡張した、λmmm(lambda-triple-m)という計算体系に基づいています。

ラムダ計算にはさまざまな評価戦略がありますが、λmmmはその中でも値呼び(Call by value)と呼ばれる、最もシンプルな評価戦略に基づきます。値呼び評価は、直感的には関数の呼び出し時にあらゆる引数がコピーされ、新しい値が作られることを意味します。

また、mimiumのコンパイラでは、λmmmを現実的な速度で実行するためのVM(仮想機械)と、そのための命令セットを独自に定義することで信号処理を実行しています。これは、実行性能の面ではFaustや先行する多くの音楽プログラミング環境と比べて劣っていますが1、リアルタイム実行の面でほとんど現実的なユースケースをカバーできる程度です。また現時点ではほとんどなんの最適化も行なっていない状態でこの性能なので、今後の改良次第で向上の余地はまだ多く残されています。(今後は、WebAssemblyを経由したJITコンパイルを予定しています。)

λmmm #

現在執筆中です

詳しい理論的解説に関しては、設計者の松浦の執筆した以下の論文を参照ください。

Lambda-mmm: 同期的信号処理言語のためのラムダ計算を基にした中間表現(Web上で本文閲覧可)


  1. mimiumv0.xではLLVMというコンパイラ基盤を用いたJITコンパイルを行なっていましたが、v2設計に伴い理論的基盤を詳細に設計することを優先したため、独自のバイトコードインタプリタでの実行の方針をとることにしました。 ↩︎

(c) mimium development community(2024)