On Fri, Jul 06, 2007 at 12:08:01PM -0700, Dan Weston wrote: > From Haskell' ticket #76: > http://hackage.haskell.org/trac/haskell-prime/wiki/BangPatterns > > > The main idea is to add a single new production to the syntax > > of patterns > > pat ::= !pat > > Experiments (ghci -fbang-patterns -O2 -S, rename identifiers, then diff)
You could have just used -ddump-ds... Core is way more readable than GHC assembly. > shows that nested pattern bindings are equivalent to the outermost binding: > > !(!pat) ==> !pat > !(~pat) ==> !pat > > ~(~pat) ==> ~pat > ~(!pat) ==> ~pat > > but I do not see any wording to that effect either in the Haskell 98 > report, the GHC documentation, or the Haskell' wiki. Have I overlooked it, > or does it follow from the existing language definition? Pattern matching is completely specified, and from the rules I can derive a counter-example to your assertion. [EMAIL PROTECTED]:~$ ghci -fbang-patterns -v0 Prelude> case 3 of !(!2) -> 'a' *** Exception: <interactive>:1:0-21: Non-exhaustive patterns in case Prelude> case 3 of !(~2) -> 'a' 'a' Prelude> [EMAIL PROTECTED]:~$ Stefan _______________________________________________ Haskell-prime mailing list Haskell-prime@haskell.org http://www.haskell.org/mailman/listinfo/haskell-prime