ここから本題
Current関数は引数を取らない関数で、逆ポーランド記法を処理するときに登場すると、そのときにリストの先頭にあったものを取り出して(pop)2回先頭に突っ込む(push)。つまり先頭が複製される。
=1+3*Current()
は
1 3 Current Multiply Add
だから
1
こうして
3 1
こうなって、そしてCurrentで以下のようになって
3 3 1
Multiplyだから
9 1
Addで
10
ですが、
=1+Current()*3
は
1 Current 3 Multiply Add
だから
1
1 1
3 1 1
3 1
4
となる。Currentが登場する位置によって答えが異なる。乗算の可換性?何それ食えるの?
=1+3*Current()*Current()
は
1 3 Current Multiply Current Multiply Add
なので
1
3 1
3 3 1
9 1
9 9 1
81 1
82
前のCurrentと後ろのCurrentで値が違う、という話。