Tweak版毛玉
久々です。未だに条件分岐があるときの構文木の書き換え方について考えているというわけで、振り返るとこの一月ほど相当出遅れていたことがわかってしまうわけです。
objを含む式をexp(obj)と書き、式exp中のobjの出現をobj2に書き換えることをexp(obj=>obj2)とでも書くことにすると、
exp(obj) ifTrue: [trueActions(obj)] ifFalse: [falseActions(obj)]
を
obj test: exp(obj) ifTrue: [:var | trueActions(obj=>var)] ifFalse: [:var | falseActions(obj=>var)].
として、#test:ifTrue:ifFalse:は、しかるべきビットベクトルつきにしたタートルのベクトルをifTrue:とifFalse:の「両方」に渡して実行するということにします。