Effects analysis can further enhance the optimizations performed by the [[Stratego optimizer]].
The following questions should be answered by effects analysis:
* Does the strategy inspect the current term?
* Does the strategy change the current term?
* Does the strategy have a side-effect (io, table)?
* Does the strategy bind variables?
* Can the strategy fail, or is it guaranteed to succeed?
If the answers to all these questions is no, then the strateg is equivalent to the identity strategy =id=.
In case some answers are no, optimizations may still be possible.
For instance, a sequence =(!t; s)= can be reduced to =s= if =s= does not inspect the current term. A
generalization of one of the [[build match fusion]] laws.
-- Main.EelcoVisser - 17 Aug 2003
------
ToDo, CategoryToDo, StrategoOptimization