|
|
|
|
|
|
|
Section 3.17.2, "Informal Semantics of Pattern Matching", is a bit vague on matching record patterns. For example, see this GHC bug report:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[ http://cvs.haskell.org/trac/ghc/ticket/246](http://cvs.haskell.org/trac/ghc/ticket/246)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
There are two possible ways forward:
|
|
|
|
|
|
|
|
|
|
|
|
- Clarify the description to ratify GHC's behaviour, i.e. record fields are matched in the order written in the **datatype**. Pros: this is easier to implement, Cons: it is not quite as intuitive for the programmer.
|
|
|
|
|
|
|
|
- Clarify the description to specify that fields are matched in the order written in the pattern. |
|
|
|
|
|
|
|
|
|
|
|
The [ errata list for the Revised H'98 Report](http://www.haskell.org/definition/haskell98-revised-bugs.html) resolved this issue (after discussion on the haskell mailing list), in favour of the second option - i.e. the pattern order, not the declaration order. |