Now we are able to encode expressions like '(x+2)*(y-30)  3' in DSL, instead of assembly-like 'localVar $ \t0 -> t0 +=: x; t0 += 2; localVar $ \t1 -> t1 +=: y; t1 -= 3; localVar $ \t3 -> t3 =: t0; t3 += t1; localVar $ \t4 -> t4 =: t3; t4 /= 3'. There is quite a room for optimizations though.