[Haskell-cafe] overloading functions

Tom Ellis tom-lists-haskell-cafe-2017 at jaguarpaw.co.uk
Thu Jan 10 14:27:06 UTC 2019


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.


More information about the Haskell-Cafe mailing list