On Sat, 1 Dec 2012, Gábor Lehel wrote:
On Fri, Nov 30, 2012 at 11:06 PM, Nate Soares <n...@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?
_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell