Subject | : Withの束縛の取扱いがおかしい |
Date | : 2012/06/06(Wed) 15:33:22 |
Contributor | : Akio Morita |
同一シンボルに対して、Withで束縛する場合の動作が一貫していないように見えます
例題として
With[{val = foo},
Scan[With[{val = #}, Print[ToString[val]]]&, {1, 2, val, 3, 4}]];
を考えます。ここで、内側のWithで束縛される valは Scan[]に与えた純関数スコープで閉じています。
期待される出力は、
1
2
foo
3
4
となります
ここで、fooに NaNを設定した式
With[{val = NaN},
Scan[With[{val = #}, Print[ToString[val]]]&, {1, 2, val, 3, 4}]];
を評価すると出力は
NaN
NaN
NaN
NaN
NaN
となり、内側のWithによる valの再束縛に失敗しているように見えます