From 2c764e4266aedeea872abad159db0af62b0f26fb Mon Sep 17 00:00:00 2001 From: Brent Yorgey Date: Fri, 15 Apr 2011 15:22:54 -0400 Subject: [PATCH] Update comment on fmapDefault to note that it only works for Traversable instances with a given definition of traversable, and NOT for instances with only sequenceA given. --- Data/Traversable.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Data/Traversable.hs b/Data/Traversable.hs index 2bdc1bc..062d1a0 100644 --- a/Data/Traversable.hs +++ b/Data/Traversable.hs @@ -170,7 +170,10 @@ instance Applicative (StateR s) where mapAccumR :: Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c) mapAccumR f s t = runStateR (traverse (StateR . flip f) t) s --- | This function may be used as a value for `fmap` in a `Functor` instance. +-- | This function may be used as a value for `fmap` in a `Functor` +-- instance, provided that 'traverse' is defined. (Using +-- `fmapDefault` with a `Traversable` instance defined only by +-- 'sequenceA' will result in infinite recursion.) fmapDefault :: Traversable t => (a -> b) -> t a -> t b {-# INLINE fmapDefault #-} fmapDefault f = getId . traverse (Id . f) -- 1.7.10.4