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.