[Haskell] Proposal: Allow "\=" for field update in record update syntax

Benjamin Franksen benjamin.franksen at bessy.de
Mon Feb 28 19:16:40 EST 2005


On Thursday 24 February 2005 23:27, Keean Schupke wrote:
> Benjamin Franksen wrote:
> >>Well at the moment this would give an error, but remember the
> >>list is heterogeneous, so you can just not give the list a type, and
> >>simply append the specific function... admitedly this is not as
> >>type-safe.
> >>
> >>hUpdateAtLabel field2 someFunction myRecord
> >
> >That is an advantage of hLists as compared to normal records.
> >
> >A disadvantage is that each field access needs to traverse the list. I
> > wonder if this isn't rather less efficient than the random access
> > provided by normal records.
>
> Well, not quite true, because the type of the label is used to index the
> value, the selection happens at compile time. So at run time there is no
> instance selection left... it is simply the value. At least in theory!
> whether
> the particular compiler/interpreter does this is implementation dependant.
> This is why we decided that the simpler to implement list was better than
> a more complex tree structure.

Hmm. I haven't seen it from this perspective, yet! At first reading, I thought 
this is simply too good to be true. I mean, there is some sort of list 
structured thing representing the whole record, right? Then how can the 
function that selects an element *not* traverse through the list?

After thinking for some time about this, my head begins to spin badly! I tend 
to believe now, that it could indeed be possible that the compiler performs 
the traversal at compile time, but the thought still gives me headaches.

Ben


More information about the Haskell mailing list