Conference Room SAD
[thread display] [new arrival display] [word search] [past log] [管理用]

Subject AddTo演算子の結合規則に付いて
Date: 2008/09/24(Wed) 19:17:53
ContributorAkio Morita

AddTo演算子(+=)の結合規則ですが、SAD/Tkinterマニュアルでは
定義されていませんが、現在のSADインタプリターの実装では
a += b += c -> (a += b) += c -> AddTo[AddTo[a, b], c]
のように左再帰で解決されるようです。

この場合、cを第二引数とする AddTo[_, c]の意味は、AddTo[a, b]の
評価値に cを加えた値を AddTo[a, b]へ拘束するという意味になり、
実際に評価するとAddTo[a, b]への InvalidSetでエラーになります
例)
a = b = c = 1;
a += b += c;
Error Message: Invalid set to (a+=1) in ((a+=b)+=1)

従って、
o こうした解釈はAddTo[a, b]へ上方値が拘束されているという例外的状況で無いと意味を成さない
o 複合演算子(+=, -=, *=, /=)を代入演算子の変種だと捕らえた場合、右再帰で解決する方が自然に使える
と思えるのですがどうでしょうか?