[Haskell-cafe] New type of ($) operator in GHC 8.0 is problematic

Christopher Allen 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
> hard.
>
> 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.
>
> --
> Kyle
>
>
> 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
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>>
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>
>


-- 
Chris Allen
Currently working on http://haskellbook.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20160205/a6ddf61a/attachment.html>


More information about the Haskell-Cafe mailing list