:type mapM :type +d mapM :t +d length let foo :: (Num a, Monoid a) => a -> a; foo = undefined :t +d foo import Data.Semigroup instance Semigroup Double where (<>) = (+) instance Monoid Double where mempty = 0 :t +d foo