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.
Cheers,
Bernie.
_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime