Name: Anonymous 2015-10-14 7:24
Isn't it hilarious? But the real question is, why are Haskallers so stupid? seriously, it's almost like they want to shit all over what took them decades to build...
I think this is the right time for me to exit:
The truth is, I still can't bring myself to use a version of Haskell post
the Foldable-Traversable-aPocalypse, let alone some future Haskell after
the changes now in the works. My personal machines are all still 7.8. My
personal projects are all pre-FTP. The Haskell I love to code in, the
Haskell I'm passionate about, the Haskell I've advocated for real world
use, and the Haskell I like to teach, is 7.8, pre-FTP.
It's not that I'm dead set against change and evolution in a language, or
even breaking changes. But FTP and beyond are changes that have lost the
balance that Haskell had between abstraction and clarity, between elaborate
and practical engineering. I don't see any restraint going forward, so I'm
getting off the train.
This puts me in an odd position with respect to Haskell Platform: I find
myself building the Platform for a version of Haskell that I don't use.
This isn't healthy for either the Platform or me. Hence, I'm resigning as
release manager.
I am sad because I believed that Haskell's path to much wider adoption was
within reach. Now, especially with the ramping up of the Haskell Prime
committee, which seems preordained to codify FTP and beyond into standard,
we are approaching our Algol 68 moment: Building a major language revision
with less opportunity than it's predecessor.
I'll still see you 'round at meet-ups and conferences. I'll just be coding
with an older accent.
- Mark "mzero" Lentczner
SPJew
wants to make FOLDABLEtm and TRAVERSABLEtm into fundamental type classes and forces everyone to learn their interfaces, so that it's in turn possible to force absolutely everything to implement them. ``Everything is a FOLDABLEtm! Everything is a TRAVERSABLEtm!''. A new ``paradigm'' right here shoven deep into the old Haskal dogs' throats.spj has no part in thisExcept he was the one who initiated this shitfest in the first place[1]:
Below is a tentative list of such changes. This is offered as_______________________
the beginning of a discussion rather than a final proposal per
se. As part of the proposal, we should solicit feedback from
the community at large (not just on this list) as well as the
haskell' committee in order to ensure that we do as much as we
can to clean things up. In particular, it'd be good to assemble
the list of complaints/proposals prior to trying to resolve the
details of any particular one, similar to the haskell' process
I suppose.* Applicative => Monad.
* Unify pure/return. Depends on Applicative => Monad.
* Add join method to Monad, with default definitions for
* join/(>>=).
* Remove fail from Monad (add Monad => MonadFail, if desired).
* Make the (<$) method of Functor more official. When starting up
ghci-7.6.1, it only gives (<$) qualified as (GHC.Base.<$)
* Replace Enum by type classes which do not require partial
* functions. (I have a more concrete proposal for this one, which I'll put on
Hackage in the next week or so.) This isn't a hot topic like the others, but
it's part of the general concern about having partial functions as
standard/required parts of the language.
* Remove from the Prelude things which are not required for resolving circularity. This is highly controversial, but I think it would help minimize future issues. If desired, in order to reduce imports, we could have an Interlude which serves the kitchen-sink role of the current Prelude but which requires an explicit import rather than being implicit like the Prelude is.
* Remove the list-monomorphic versions of Foldable/Traversable functions. And/or export them from a separate PegagogicalHaskell module for learners to use, such that they do not materially affect intermediate/advanced Haskellers.
* This is a bit off-proposal, but: do not have every Control.Monad.* module re-export Control.Monad. Modules like Control.Monad.Foo should only export Foo-specific things; if people want the general tools they can import Control.Monad itself. This is related to the pain of standardizing on Foldable/Traversable.
* Clean up the Monoid class, add a Semigroup superclass, etc. There was a lot of discussion about this a while back. We came up with a fair solution, but it'd be nice to revisit the discussion and tighten things up while we're at it.
map
used to work on any functor. (++)
was part of MonadPlus. List comprehensions were generalized to any monad.