Stratego -- Strategies for Program Transformation

An anonymous rewrite rule is a rewrite rule that can be used inside a stategy expression.
An anonymous rewrite rule of the form:

\ p1 -> p2 where s \

is desugared to

{x1, ..., xn : ?p1; where(s); !p2}

where x1, ..., xn are the free variables of `p1`

. Any free variables used in `s`

and `p2`

, which do not occur in `p1`

are bound in the context of the anonymous rewrite rule.

An anonymous rewrite rule of the form:

( p1 -> p2 where s )

is desugared to

(?p1; where(s); !p2)

This style doesn't imply any scope for the variables of the rule: it only provides rule-like syntax. The variables of p1, s and p2 are all bound in the context of the anonymous rewrite rule.