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

Greg Woodhouse gregory.woodhouse at sbcglobal.net
Thu Nov 17 15:15:34 EST 2005

--- Cale Gibbard <cgibbard at gmail.com> wrote:

> 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


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

>  - Cale

Gregory Woodhouse  <gregory.woodhouse at sbcglobal.net>

"Interaction is the mind-body problem of computing."

--Philip Wadler

More information about the Haskell-Cafe mailing list