[Haskell-cafe] overloading functions

Brandon Allbery allbery.b at gmail.com
Thu Jan 10 19:49:55 UTC 2019


Category theory books are almost certainly not what you want to be looking
at. Yes, some things in Haskell are inspired by it; but they're entirely
usable wthout, and they're all rather simplified compared to the theory.

Typeclasses, you might want to start with the Typeclassopedia
https://wiki.haskell.org/Typeclassopedia. And understand that it is not
general function overloading, and you can get yourself into trouble by
trying to treat them as such: types flow "backwards" in Haskell, compared
to languages where overloading is common. If all you know about a type is
its name, you can't do anything with it. In most OO languages with
overloading, you can do anything you want with it and it'll throw an
exception if it doesn't support it; in Haskell, the compiler won't let you
get away with it at all, it never reaches the point of a runtime exception.
Similarly, if you know (Num a), this doesn't mean you can use division; you
need to also know (Integral a) to get div, or (Fractional a) to get (/).

One thing that follows from how this interacts with typeclasses is return
type polymorphism. Consider that maxBound takes no parameters, and decides
what to do based on the type it's used at.

On Thu, Jan 10, 2019 at 2:38 PM Damien Mattei <damien.mattei at gmail.com>
wrote:

> i'm not so pessimist,i'm beginning to have fun with haskell...really!
> about teaching ressource i will be happy to know where i can find them...
> i only post in haskell cafe when i have not find the answer online
> (tutorials,stackoverflow,real haskell book
> <http://book.realworldhaskell.org/>etc,etc... in the hunded pages i
> search i even get a look at Categories for the working Mathematician
> <https://books.google.fr/books?id=6KPSBwAAQBAJ&printsec=frontcover&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false>)
> it is only when i have exhausted all the online ressource that i post to
> the cafe...
>
> On Thu, Jan 10, 2019 at 6:52 PM Tom Ellis <
> tom-lists-haskell-cafe-2017 at jaguarpaw.co.uk> wrote:
>
>> On Thu, Jan 10, 2019 at 04:23:49PM +0100, Damien Mattei wrote:
>> > Le 10/01/2019 15:27, Tom Ellis a écrit :
>> > > On Thu, Jan 10, 2019 at 12:34:04PM +0100, Damien Mattei wrote:
>> > >> i have this definition:
>> > >>
>> > >> {-# LANGUAGE FlexibleInstances #-}
>> > >>
>> > >> class ConcatenateMaybeString a where
>> > >>   cms :: Maybe String -> a -> Maybe String
>> > >>
>> > >>
>> > >> instance  ConcatenateMaybeString (Maybe String) where
>> > >>      cms mf ms =
>> > >>        mf >>= (\f ->
>> > >>             ms >>= (\s ->
>> > >>                       return (f ++ s)))
>> > >>
>> > >>
>> > >>
>> > >> instance  ConcatenateMaybeString String where
>> > >>      cms mf s =
>> > >>        mf >>= (\f -> return (f ++ s))
>> > >
>> > > Trying to simulate overloading like this is ultimately going to lead
>> to more
>> > > frustration than benefit.  I strongly suggest you just define two
>> different
>> > > functions.
>> >
>> > those functions could be seen as a "style exercise" , for me,coming from
>> > untyped languages such as Scheme or LisP it's Haskell which is a
>> > frustration :-)
>>
>> I think you're going to get significantly more frustrated with Haskell if
>> you try to learn it like this by yourself rather than by working through
>> some widely approved teaching resource.  Of course, how you spend your
>> time
>> is up to you, but if you're frustrated with Haskell then trying to make it
>> up as you go along is only going to worsen the feeling!
>> _______________________________________________
>> Haskell-Cafe mailing list
>> To (un)subscribe, modify options or view archives go to:
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>> Only members subscribed via the mailman list are allowed to post.
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.



-- 
brandon s allbery kf8nh
allbery.b at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20190110/da00d8c3/attachment.html>


More information about the Haskell-Cafe mailing list