Pattern matching order for records

Malcolm Wallace Malcolm.Wallace at cs.york.ac.uk
Fri Oct 13 12:19:09 EDT 2006


Ian Lynagh <igloo at earth.li> wrote:

> Has clarifying the pattern matching order for records as described in
> http://hackage.haskell.org/trac/ghc/ticket/246 been discussed for
> haskell'? I couldn't see it on the proposals list.

Perhaps because this has already been fixed in the errata to the
Haskell'98 Report?  See
    http://haskell.org/definition/haskell98-revised-bugs.html

Specifically:
    [July 2004] Page 32, Section 3.17.2, Informal Semantics of
    Pattern-Matching, case #6. Case 6 says: "Matching against a
    constructor using labeled fields is the same as matching ordinary
    constructor patterns except that the fields are matched in the order
    they are named in the field list. All fields listed must be declared
    by the constructor; fields may not be named more than once. Fields
    not named by the pattern are ignored (matched against _)."

    You could interpret 'field list' to mean the order the fields appear
    in the pattern, OR, the order in which the fields were declared. The
    choice of interpretation affects termination behaviour.

    The intention of the Report writers was to use the field order of
    the pattern, not the declaration. Thus, the Report can be clarified
    by changing the end of the first sentence above to read "the order
    they are named in the pattern field list".

Regards,
    Malcolm


More information about the Haskell-prime mailing list