> An alternative to allow my second example to match on the third
> clause might be:
> [...]
> where (p',gi') = (p,gi) with variables renamed consistently.

Actually, it isn't necessary to rename in this translation (the
condition was left over from a previous version).  Apologies if this
confused anyone.

        p | g1 = e1
            ...
            gn = en

==      p = let t1 = case e1 of
                        x1@p | g1 -> x1
                             | otherwise -> t2
                        _ -> t2
                ...
                tn = case en of xn@p | gn -> xn
            in t1

Kevin

Reply via email to