[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