I said: > Although it covers irrefutable (lazy) pattern matching in the second > section, it does appear to miss the point that let bindings are always > irrefutable. > > Thus, there is no difference between these two: > > let (x,y) = foo in ... > let ~(x,y) = foo in ...
Andrew Bromage said: > let (x,()) = (1,undefined) in x > let (x,~()) = (1,undefined) in x In other words, the irrefutability of a pattern match does not distribute inside the top-level data constructor of the pattern. See also the second rule in section 3.17.2 of the Revised Haskell 98 Report (Informal Semantics of Pattern Matching). _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe