RE: Arrowcase1

Simon Peyton-Jones <[email protected]>
Newsgroups gmane.comp.lang.haskell.cvs.all,gmane.comp.lang.haskell.cvs.ghc
Message-ID <DCA83D5F3861C941808187D4D3878750015349D559@EA-EXMSG-C312.europe.corp.microsoft.com>
| 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.