Kevin writes:

| I strongly agree that Haskell can become a *much* more 
| powerful language
| with out losing any of clean syntax or semantics.  However, 
| when ever I
| bring up limitations of Haskell type system on this list I either get
| ignorance or resistance.

I strongly agree that Haskell could be better.  But it is not easy
to come up with clean designs for the sort of extensions you would like.
- True ad-doc polymorphism
- Built in dynamic typing system.
- State Encapsulation
- A solution to the abilities arising from multi parameter type classes.
- Syntactic sugar for supporting OO programming styles

It is easier to identify the problem, that to identify a solution.
It is easier to identify a solution than to describe that solution 
        completely and precisely.
It is easier to describe the solution precisely than to implement it.

I think some of the resistance Kevin feels may have something of
the flavour of "lets wait to find a good solution, rather than 
whip up a half-baked one".

Dynamic types is a good example.  There is a large design space of
possible solutions, and it's not clear (to me) which is best.  I don't
think any consensus has emerged.  

Ad hoc polymorphism is another good example.  Carlos's System CT
goes a way towards a fairly fully-described solution; Mercury implements
another variant.  I don't know how the two compare.  It is controversial
whether the interaction of ad-hoc polymorphism with type-class overloading
makes the whole thing unmanageably complex.

On the MPTC issues, a good solution does indeed seem to be emerging,
as Mark mentions.

None of this is to say that dynamic types or ad-hoc polymorphism
is a bad thing.  But I think it's a misconception to interpret the
feedback Kevin has received as closed-mindedness. It's just a lot of work
to work out to describe and implement these sort of extensions; even
laying aside the expressiveness vs simplicity tradeoff, which itself
is a real issue.

What can be done to hurry the process along?  One constructive thing
would be for enthusiasts for a particular extension to move towards
complete, precise descriptions of what they would like; and to 
implement the feature in Mark's type checker (the one he's just released).
Doing this doesn't guarantee that a feature will make it into Haskell,
but it does make it more likely.  The way to guarantee that a feature
will make it into a particular compiler is to implement it.  Both Hugs
and GHC are open source, and work from a CVS repository you can get to
over the network.

Haskell belongs to you. (Sound of violins.)

Simon




Reply via email to