コップ本を買って Scala のおもしろさがわかってきたのと、言語のデザインについてあれこれ考えていたこともあって、ちょっと Scala で処理系をつくってみようとおもいます。
- JavaScript のような辞書と関数による単純な設計
- Io をも越える強いメッセージ指向
- Io や JavaScript よりもうちょっとイカした関数リテラル
- 部分適用などの関数型の要素
- 動的型付け
- Ruby のモジュールをより改良した Mix-in
などの特徴を持った言語にしてみたいとおもっています。
Io は if などのほかの言語だと制御構造として提供されているものも、メソッドとして定義されているといった、かなり徹底したメッセージ指向であり、代入もメッセージ・センドとして表現されますがちょっと甘いと感じています。代入も平等にメッセージ・センドとして表現したらどうなるだろう、という考察が前回のエントリです。
JavaScript は関数リテラルがあって、ある意味で Ruby よりも関数型に近いといえるのですが、長くてちょっとイカしていないです。コールバックを渡すときの見た目としては、やはり Ruby のブロック引数がきれいです。
動的型付けは、やはり Scala がおもしろいといえど Ruby の気軽さには一歩及ばない(これは Scala の実行環境にも一因があるとおもうので、一概に型付けのしかたの問題であるとは言えませんが)とおもうし、なにより静的型付けだと Scala との差別化が弱く、自分の動機の維持がつらそうだ、と考えたからです。
GitHub にリポジトリを立てています。