【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

ラムダ式

ラムダ式が記述できるようになりました。実装としては無名関数のシンタックスシュガーです。

パーサを色々と整理しました。今まで特別扱いだったメンバアクセス演算子や関数呼び出しなどを通常の演算子と同列に扱うようにしたため、かなりすっきりしました。
ラムダ式は引数の前に\を付けます。円マークやエスケープシーケンスとは関係なく、λに見立てたバックスラッシュです。本当はC#のようにいきなり引数を書けるようにしたかったのですが、パーサが複雑になるため、Haskellのように引数の前にλを付けるようにしました。ただしそれ以外の文法はC#準拠です。

// 無名関数
var add = function(a, b) { return a + b; }

// ラムダ式
var sub = \(a, b) => a - b; 

クロージャではないためレキシカルスコープを持ちません。そのため用途が制限されてあまり実用的ではありません。次はこの部分を何とかする必要があります。