Two of John Launchbury's suggestions for Haskell 1.3 would mesh well
with the pH (parallel Haskell) effort:

>    1. We should get rid of Assoc.
>    
>    When explaining my programs to other people I find this is a point of
>    confusion. Imagine exaplaining array construction, "When I define an array,
>    the comprehension produces a list of index/value pairs, only they are not
>    written as pairs--these's this special type called Assoc. Oh, and don't be
>    confused by :=. That's not assignment. It is an infix pairing operator."
>    All of this is entirely unnecessary. Pairs have been used in maths for
>    decades to represent exactly this sort of thing. I simply do not believe
>    that [Assoc a b] provides me with any better information than [(a,b)].
>    Worse, I often find myself having to redefine standard pair functions on
>    elements of Assoc.

In designing pH, we have been ``anguished'' by the fact that := had
already been used for an unnecessary and unintuitive purpose.  I agree
that Assoc is just a point of confusion and one should use ordinary
pairs instead.

>    2. Arrays should be lazier.
>    
>    I'm expecting Lennart to agree with me here as LML has the Right Thing. I
>    am convinced that there is no semantic problem with this, and I think that
>    even Simon isn't horrified at the implementation implications. The ability
>    to define arrays by self reference is just as important as it is for lists.
>    I am assuming that the fact that lazy indexes provide a better match with
>    laziness elsewhere is clear, but I am willing to expand on this point if
>    someone wants.

In designing pH, we were going to adopt the lazier semantics and
depart from Haskell semantics; this suggestion would bring them back
together.

Nikhil

Reply via email to