Bernie Pope bjpop at csse.unimelb.edu.au
Thu Nov 30 02:10:05 EST 2006

On 30/11/2006, at 3:36 PM, Ashley Yakeley wrote:

> Malcolm Wallace wrote:
>> Unfortunately, I suspect that teaching is _the_ major use-case for
>> defaulting.  Imagine, day one, lesson one, a student types
>>     Prelude> 1+2
>> into Hugs, and gets the response
>>     Unresolved overloading: Num a
>> Huh?  This is lesson one, and you already need to tell students about
>> type classes and overloading, before you have even covered simple
>> expressions fully?  I am certain this is the reason why defaulting  
>> was
>> introduced.
> I propose we abandon "teaching" arguments for design choices  
> entirely. There are two reasons for this. Firstly, they don't apply  
> to the majority of Haskell users, and secondly, they almost always  
> misapprehend the language-learning process.
> To give you a vague example, when I was learning ML, what appealed  
> to me was the sense of cleanliness and purity about the language.  
> Any apparent weirdness was fine, as long as I could discover the  
> elegant reason behind it. This right up until finding out about  
> references, which bothered me so much that I dropped it and learnt  
> Haskell instead.
> That something might confuse the beginning user should count for  
> nothing if it does not annoy the more experienced user.

Whilst I agree with some of your sentiment, I think that this  
argument is too extreme.

On a general level, for a language with a relatively small community,  
Haskell has been rather successful
as a vehicle for education. I don't think we should underestimate the  
impact that this exposure has
had on the language. Teachers of Haskell, and students of Haskell,  
are important members of the
community, and their opinions are not irrelevent.

Having said that, I agree that we should be careful with arguments  
based on the grounds of ease of
teaching, especially so when we don't have good data to back them up.  
In many cases, I think that
we should fix the compilers first, before we try to fix the language,  
in particular the error messages
generated by them.

You can't please all of the people all of the time, so there will  
naturally be situations where
different user groups have competing interests. If a design decision  
would impinge on both
the experienced users and the beginners, then, of course, a value  
judgement has to be made.

I see no reason to rule out the needs of teaching altogether,  
especially in cases where there
is no real conflict with other user groups.


More information about the Haskell-prime mailing list