[Haskell-cafe] New type of ($) operator in GHC 8.0 is problematic
cma at bitemyapp.com
Fri Feb 5 17:59:18 UTC 2016
I don't want, nor do I think it's a good idea, to have a beginners'
Prelude. My point about ($) was not expressly about beginners, it was about
intermediate practitioners too.
On Fri, Feb 5, 2016 at 11:55 AM, Kyle Hanson <me at khanson.io> wrote:
> I am also happy the discussion was posted here. Although I don't teach
> Haskell professionally, one of the things I loved to do was show people how
> simple Haskell really was by inspecting types and slowly putting the puzzle
> pieces together.
> Summary of the problem for others:
> From *Takenobu Tani*
> Before ghc7.8:
> Prelude> :t foldr
> foldr :: (a -> b -> b) -> b -> [a] -> b
> Prelude> :t ($)
> ($) :: (a -> b) -> a -> b
> Beginners should only understand about following:
> * type variable (polymorphism)
> After ghc8.0:
> Prelude> :t foldr
> foldr :: Foldable t => (a -> b -> b) -> b -> t a -> b
> Prelude> :t ($)
> :: forall (w :: GHC.Types.Levity) a (b :: TYPE w).
> (a -> b) -> a -> b
> With this change it looks like I will no longer be able to keep `$` in my
> toolbox since telling a beginner its "magic" goes against what I believe
> Haskell is good at, being well defined and easy to understand (Not well
> defined in terms of Types but well defined in terms of ability to precisely
> and concisely explain and define whats going on).
> It looks like where the discussion is going is to have these types show by
> default but eventually have an Alternative prelude for beginners.
> From *Richard Eisenberg:*
> - It's interesting that the solution to the two problems Takenobu pulls out below (but others have hinted at in this thread) is by having an alternate Prelude for beginners. I believe that having an alternate beginners' Prelude is becoming essential. I know I'm not the first one to suggest this, but a great many issues that teachers of Haskell have raised with me and posts on this and other lists would be solved by an alternate Prelude for beginners.
> I don't like the idea of fragmenting Haskell into "beginners" and
> "advanced" versions. Its hard enough to get people to believe Haskell is
> easy. If they see that they aren't using the "real" prelude, Haskell will
> still be this magic black box that is too abstract and difficult to
> understand. If they have to use a "dumbed down" version of Haskell to
> learn, its not as compelling.
> There is something powerful about using the same idiomatic tools as the
> "big boys" and have the tools still be able to be easy to understand.... by
> default. Adding complexity to the default Haskell runs the risk of further
> alienating newcomers to the language who have a misconception that its too
> Admittedly, I am not well informed of the state of GHC 8.0 development and
> haven't had time to fully look into the situation. I am very interested to
> see where this conversation and the default complexity of Haskell goes.
> On Fri, Feb 5, 2016 at 8:26 AM, Tom Ellis <
> tom-lists-haskell-cafe-2013 at jaguarpaw.co.uk> wrote:
>> On Fri, Feb 05, 2016 at 05:25:15PM +0100, Johannes Waldmann wrote:
>> > > What's changed?
>> > I was referring to a discussion on ghc-devs, see
>> > https://mail.haskell.org/pipermail/ghc-devs/2016-February/011268.html
>> > and mixed up addresses when replying.
>> I'm glad you did, because this is the first I've heard of it!
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
Currently working on http://haskellbook.com
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe