Arrowcase1

Simon Peyton-Jones simonpj at microsoft.com
Mon Jan 8 03:36:19 EST 2007


| OK, so I'll need to put p77 in the pipe along with x and z.  I think
| my problem is I'm using collectPatsBinders to get the vars bound by
| a pattern, but it deliberately doesn't include dictionary binders
| from ConPatOut.  Am I going to get the same issue everywhere there
| are patterns?

I guess so.  It's very much as if instead of

>                 case compare x y of
>                   GT { p77 = plusInt } -> returnA -< p77 z x

you had

        case compare x y of
                GT -> let p77 = plusInt in  returnA -< p77 z x

Hmm.  Would it be possible to desugar in the ordinary way first, and only *then* run over the result doing the proc-isng stuff?  Then you would not have to deal with nested patterns etc.

Simon



More information about the Cvs-ghc mailing list