LunarML」タグアーカイブ

LunarML進捗:signatureの実装に向けて

自作SML処理系進捗:Hello Lua! の続き。

自作SML処理系「LunarML」の言語機能の実装も佳境に入ってきて(equalityやexception等の厄介な奴らはだいたい片付けた)、残すところは

  • withtype (derived form)
  • abstype(Successor MLに従いderived formとして実装する予定)
  • signature
  • functor

くらいとなってきている。

続きを読む

自作SML処理系で 1 + 2 がコンパイルできた

2年ほど前からSML処理系を自作している。それがこの度、「動作するターゲットコード (Lua) を出力する」という重要なマイルストーンに到達したので記念に記事を書いておく。

この処理系については、2018年9月に開催された勉強会「ML Day #2」で進捗報告のLTをしたこともあった。(あれから2年も経ってまだこの段階かよ!)

続きを読む

SML、はじめました

動機

プログラマーの3大欲求と言えば「プログラミング言語(処理系)を作りたい」「テキストエディターを作りたい」「OSを作りたい」である。これらの欲求は定期的に湧いてきて、多くの場合は実を結ぶことなく霧消する。

そんなわけで先日、筆者にもプログラミング言語の処理系を作りたい欲求が湧いてきた。

具体的には、ML系の型推論を持った言語を作りたい。また、エフェクト推論・リージョン推論のような技法を試したい(一旦普通に処理系を作り、その後に改造してエフェクト推論やリージョン推論を試す)。

別の方向性の動機として、型のないスクリプト言語(具体的にはLua)で大きなソフトウェアを書くのがだるい。静的型のついた言語からスクリプト言語にコンパイル(トランスパイル)するやつを作りたい、というものがある。

最近はJavaScriptへトランスパイルする処理系は色々登場したが、それ以外のスクリプト言語を吐き出す処理系というのはまだ少ないように思う。

これらの動機付けが混ざった結果、「型推論のある言語からスクリプト言語へのコンパイラーを作れば良い」という結論に至った。 続きを読む