限定的なラムダ関数を実装

式として一息で書く場合のラムダ関数を使えるようにした。
例:
x = 100;
y = 1;
a = (\x . x + y) 123;
この場合 a は 124 となる。
この場合のラムダ関数中のxは、123の値を持った局所変数として機能する。
ラムダ関数中の x は、外部の x （100の値を持つ変数）とは別の変数となる。

また、ラムダ関数は入れ子にもできます。
例:
x = 100;
y = 200;
a = (\x . (\y . x + y) 1) 2
この場合は a = 3 となります。
これは概念としては変数 y に 1 を拘束した状態の関数への計算
a = (\x . x + 1) 2
と同様です。

現状の不足点:
現状、ラムダ関数に引数を与えない状態は未定義です。
例:
a = (\x.x+1);
これは未定義です。
現状では、、ラムダ関数は必ず引数を与えた状態でなければ変数に代入できません。
a = (\x.x+1)2;
この場合でしか動作しません。

もし、引数を与えない状態の関数を変数へ代入できるのであれば、
それは名前有りの関数として扱える可能性も生まれるはずですが、
現状では引数を与えない関数は変数へ代入できません。
将来的にはこれを行えるようにしたいです。

メモ：
前回の mem.c のコミットの際に、メモリーリークの可能性を示唆していたが、
よくソースを読んだら再設定時毎にメモリー確保の有無を確認して
必要であれば適切に開放する処理を行っていたので、
使用メモリーが延々と増え続ける類のメモリーリークはしていなかった。