Add explicit foldMap implementation for Maybe
authorDavid Feuer <david.feuer@gmail.com>
Thu, 19 Jan 2017 21:40:06 +0000 (16:40 -0500)
committerDavid Feuer <David.Feuer@gmail.com>
Thu, 19 Jan 2017 21:40:07 +0000 (16:40 -0500)
Eric Mertens pointed out that using the default `foldMap`
implementation for `Maybe` led to an efficiency problem by
implementing `foldMap f (Just x)` as `f x <> mempty` rather than
as `f x`. This should solve the problem.

Reviewers: hvr, austin, bgamari

Reviewed By: bgamari

Subscribers: glguy, thomie

Differential Revision: https://phabricator.haskell.org/D2988

libraries/base/Data/Foldable.hs

index ce097df..0a8b003 100644 (file)
@@ -270,6 +270,8 @@ class Foldable t where
 
 -- | @since 2.01
 instance Foldable Maybe where
+    foldMap = maybe mempty
+
     foldr _ z Nothing = z
     foldr f z (Just x) = f x z