普通にどうでもいいような言語作ろうとしたら型なしラムダ計算に余計なもの足しただけみたいになってしまった。 再帰も単純にはできない。
Data 宣言はただの代入の糖衣構文です。 例えば Data just _ | nothing は just = (\x c1 c2 -> c1 x); nothing = (\c1 c2 -> c2) を意味します。 just, _, nothing は任意の識別子です。 _の部分は名前であれば意味は変わりません。 Data の直後に | があってもなくても構いません。