言語仕様の拡張案2

技術的に実装できそうな見通しは立っています。
postは関数呼び出し前にコールスタックを1つ分用意し、old-valueを退避させています。それと同じ要領で、代入文を実行する前に似たものを用意し、old-valueを退避させます。そして代入後にinvを評価します。多重代入文も同様です。


ただ、多重代入文はネストする可能性があります。
以下のように代入する値に操作が使われ、その操作の中に多重代入文を使っている場合が。
こういう場合、本当に問題ないのかどうか、読みきれていません。
マルチスレッドや排他も絡んでくるからなぁ〜。

public hoge: () ==> ()
hoge() == 
    atomic (
        x := foo();
        y := obj.goo();
    );

foo: () ==> int
foo() == (
    atomic(
        x := 1;
    )
    return 1;
);