Records (was Re: [Haskell] Improvements to GHC)

Tomasz Zielonka tomasz.zielonka at gmail.com
Sun Nov 20 09:43:08 EST 2005


On Sun, Nov 20, 2005 at 08:54:35AM -0500, David Roundy wrote:
> As an aside, what's responsible for the insanity of pattern matching record
> fields being backwards? I'd bar = b to bind b to bar, not the other way
> around... why should record pattern matching use '=' in a manner opposite
> from the rest of Haskell?

It just mimics the way (record) values are constructed, as in all
pattern matching in Haskell. You can put a pattern variable everywhere
you could put a value in a corresponding constructing expression. For
example, all these "terms" can be used both as an expression and a
pattern. In the first case x, y, z are expressions, in the second they
are patterns.

    [x,y,z]

    (x:y:z)

    (x,(y,z))

    (C x y, D z)

    R { field1 = x, field2 = y, field3 = z }

I think this is very consistent.

Best regards
Tomasz


More information about the Haskell mailing list