二週間でオレオレ言語を作るプロジェクト (構想編)
突然ですが、ここで宣言します。 今日から二週間かけてオリジナルのプログラミング言語の 設計と実装に挑戦するプロジェクトを始めたいと思います。 二週間という限られた期間の中で、自分が本気で頑張ったとき、 いったいどの程度のものを作ることができるのか確かめるのが 目的です。
以下にどんなプログラミング言語を作りたいかの構想をメモしておきたいと思います。
概要
言語はF#やOCaml、Haskellのような静的型付けを行う関数型言語にしたいと 考えています。文法はオリジナルで既存のさまざまな言語を参考にデザインします。とりあえず言語名(コードネーム)はMokkosu (もっこす)です。 動作環境としては.NET Framework上を想定しています。
コンセプト
Mokkosuは関数型の機能を使って、2Dの描画を行うインタラクティブなプログラムを 手軽に実装できるプログラミング言語です。 ちょうどProsessingを手続型言語から関数型言語に、 JVMから.NETに置き換えたものというイメージです。
機能
- ラムダ式
- 多相の型推論 (Hindley-Milner型推論 + Value Restriction)
- 代数的データ型
- パターンマッチ
- リスト内包表記
- 2D描画用ライブラリ
- .NETのメソッドを呼び出す機能
実装
- 主にC#で実装。必要に応じてF#を利用。
- .NET FrameworkのILを出力するコンパイラと、簡易IDEを実装。
その他
日程
前半(言語の実装)
- 2/5(木): 文法の構想を練る、最低限のパーサ・型推論器の実装
- 2/6(金): とりあえず(コンパイラではなく)インタプリタを実装
- 2/7(土): 最低限の機能(ラムダ計算 + 基本演算)のコンパイラを作成
- 2/8(日): 代数的データ型とパターンマッチを導入
- 2/9(月): .NETのメソッド呼び出しと残りの機能を実装
- 2/10(火): 標準ライブラリを整備
- 2/11(水): IDEを実装(WPFで)
後半(デバッグと環境整備)