
--- Cale Gibbard
Actually, I didn't mention this in the other post, but why not the other way around? Make record selection (#) or (!) (though the latter gets in the way of array access), and leave (.) for function composition.
Actually, the fact that (!) is the array selector makes it all the more attractive as a record selector. (It does make you wonder if a record isn't a kind of a typed associative array, though...)
Personally, I'd like something which looked like an arrow for record selection, but most of the good 2-character ones are unavailable. (~>) is a bit hard to type and looks wrong in some fonts.
Well, yeah, but the arrows have such a fundamentally different meaning in Haskell. (I thought of that one, too).
There's a "triangle" which is not taken, and isn't so hard to type (|>).
If we're not careful, though, Haskell will end up looking like APL.
I never really understood the attachment to (.) for record selection. There's no reason that we have to make things look like Java and C.
Another option is to make application of a label to a record mean projection, somewhat like things currently are, though since labels aren't really functions anymore that is potentially confusing.
Actually, I thought of that, too, or rather something like get label record or get record label (I haven't made up my mind which way the currying makes more sense. Do you have a generic function for getting records with a certain label, or do you apply "get label", tget the field with this label, to record?)
- Cale
===
Gregory Woodhouse