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