[Haskell] Status of Haskell'?

Henning Thielemann lemming at henning-thielemann.de
Sat Dec 1 00:37:12 CET 2012

On Sat, 1 Dec 2012, Gábor Lehel wrote:

> On Fri, Nov 30, 2012 at 11:06 PM, Nate Soares <nate at so8r.es> wrote:
>> +1. I agree generally with Gabor's points -- GHC is in the drivers seat. But
>> at some point we should take a look at all the things GHC has made that did
>> pay off and that are good and make them official.
>> I'd very much like to see that endorsement happen soon, even if it's not
>> aggressive.
> Well, I'm not so sure it's a great idea to just bake "what GHC does at
> this moment" (for any particular extension) into the standard without
> really thinking about it. Even then, you have to figure out, in great
> detail, what GHC does, and write it all down! That's not negligible
> effort, either. And the alternative is to also publicly discuss and
> hash all of it out down to the little tiny gritty stuff. But wanting
> to write a new standard (big effort!) just to get rid of some pragmas
> and make people feel better (small payoff!) feels like a mismatch to
> me.

In my opinion it is a good thing if people feel bad about a lot of 
LANGUAGE pragmas at top of their modules. For me the number of LANGUAGE 
pragmas is a (reciprocal) measure of how much effort the programmer 
invested in cleaning up the code. In the past I removed a lot of 
FlexibleInstances, FlexibleContexts, UndecidableInstances, 
TypeSynonymInstances, PatternGuards and _improved_ the code this way. The 
need for generalized instances is often caused by badly designed classes 
or types. For me many extensions are a way to get a working implementation 
quickly from which I can derive a simpler one by throwing out extensions 
successively. I would also like to tell students that if they need to 
enable language extensions (or specific set of extensions) then they are 
solving a task in a too complicated way.

I like to support Gábors arguments. We should have multiple 
implementations before standardization. E.g. I remember how TypeFamilies 
have evolved over the time or how the interaction of the forall quantifier 
with ($) changed between versions of GHC - how can we get confidence that 
GHC implemented these features in the most reasonable way?

More information about the Haskell mailing list