In all of this, I neglected to mention *why* I think unlifted tuples
are a good idea.  I've given various reasons, but not the real one.

The real one is: Embarassment.  I wrote an implementation of linear
logic in Haskell.  It took a while before I discovered why my
implementation got into a loop: I needed to add ~ to my tuple
patterns.  One reason that I haven't distributed my implementation to
the LL community is that I quail at the thought of explaining why those
~'s have to be there.

In the end, lifted vs. unlifted types is a subtle distinction which
advanced users will have to cope with.  But I would greatly prefer a
language in which such subtleties can be ignored as long as possible.
In particular, I'm not especially happy with Warren's proposal to
include ~ and ! in `data' declarations, despite its uniformity.
Declaring a new type isomorphic to an existing type is so basic that it
should not require knowledge of esoterica like ~.

Cheers,  -- P


Reply via email to