On Sun, Nov 20, 2005 at 03:43:08PM +0100, Tomasz Zielonka wrote: > 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] [...] > R { field1 = x, field2 = y, field3 = z } > > I think this is very consistent.
I see, you're right that it's consistent, but I still don't like the use of '=' in this scenario. I don't really have a better idea, but something like R { field1 -:- x, field2 -:- y, field3 -:- z } (where I don't like the -:- but can't think of anything better off the top of my head) might be more intuitive, since '=' means bind the value on the right to the name on the left everywhere else in haskell, but in record syntax it's part of a constructor. It'd be nice to reuse an existing haskell syntax ("->" ?), but I can't think of one that would fit. One could perhaps use :=, which at least looks like a constructor rather than a binding... -- David Roundy http://www.darcs.net _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell