Re: Bug in Hugs, Haskell behavior question
Derek Elkins <[email protected]> Fri, 04 Apr 2008 20:49:41 -0500
| Newsgroups | gmane.comp.lang.haskell.cafe,gmane.comp.lang.haskell.hugs.bugs |
|---|---|
| Message-ID | <1207360181.19465.8.camel@derek-laptop> |
On Fri, 2008-04-04 at 18:34 -0700, Fritz Ruehr wrote: > In lab the other day I was showing pattern bindings to a student and > broached a limiting case, one with no variables to be bound in the > pattern. I was surprised to find that Hugs crashed when I tried a > pattern binding at top level like this: > > (2,[1,4],5) = (2,[1,4],5) > > It also crashed on the simpler: > > [2] = [2] > > On the other hand, this turns out to be acceptable: > > 2 = 2 > > In fact, even this goes through without a hitch! > > 2 = 3 > > I'm not sure from the language definition yet whether this last > should give an "Unmatched pattern" error, but if it's intended > behavior, it does look a little odd. > > Would anyone care to argue for or against allowing this? > > In any case, the more structured patterns cause the latest (Sep 06) > Hugs release to crash, with "INTERNAL ERROR: compileGlobalFunction". > > (GHC allows the strange "2 = 3" and handles the structured ones fine, > including even "(1,[2,3],4) = (4,[3,37],42)". I haven't checked any > other compilers.) Top-level bindings are irrefutable, so 2 = 3 is fine, if vacuous.