diff git a/libraries/base/Data/Functor.hs b/libraries/base/Data/Functor.hs
index 2c0fbc3f292c60f546e0499c73159e4969738b24..4cbfcfcf98baea164fc96df7c736965377b489fe 100644
 a/libraries/base/Data/Functor.hs
+++ b/libraries/base/Data/Functor.hs
@@ 11,8 +11,31 @@
 Stability : provisional
 Portability : portable

 Functors: uniform action over a parameterized type, generalizing the
 'Data.List.map' function on lists.
+
+ A type @f@ is a Functor if it provides a function @fmap@ which, given any types @a@ and @b@,
+ lets you apply any function of type @(a > b)@ to turn an @f a@ into an @f b@, preserving the
+ structure of @f@.
+
+ ==== __Examples__
+
+ >>> fmap show (Just 1)  (a > b) > f a > f b
+ Just "1"  (Int > String) > Maybe Int > Maybe String
+
+ >>> fmap show Nothing  (a > b) > f a > f b
+ Nothing  (Int > String) > Maybe Int > Maybe String
+
+ >>> fmap show [1,2,3]  (a > b) > f a > f b
+ ["1", "2", "3"]  (Int > String) > [Int] > [String]
+
+ >>> fmap show []  (a > b) > f a > f b
+ []  (Int > String) > [Int] > [String]
+
+ The 'fmap' function is also available as the infix operator '<$>':
+
+ >>> fmap show (Just 1)  (Int > String) > Maybe Int > Maybe String
+ Just "1"
+ >>> show <$> (Just 1)  (Int > String) > Maybe Int > Maybe String
+ Just "1"
module Data.Functor
(
diff git a/libraries/base/GHC/Base.hs b/libraries/base/GHC/Base.hs
index 4953a7d58c115976d07e9251c91d1cfd846472db..efa8d4666f3dab7c2dfe6ded7b3158e0a3241caa 100644
 a/libraries/base/GHC/Base.hs
+++ b/libraries/base/GHC/Base.hs
@@ 444,14 +444,12 @@ instance Semigroup a => Semigroup (IO a) where
instance Monoid a => Monoid (IO a) where
mempty = pure mempty
{  The 'Functor' class is used for types that can be mapped over.
Instances of 'Functor' should satisfy the following laws:
+{  A type @f@ is a Functor if it provides a function @fmap@ which, given any types @a@ and @b@
+lets you apply any function from @(a > b)@ to turn an @f a@ into an @f b@, preserving the
+structure of @f@. Furthermore @f@ needs to adhere to the following laws:
> fmap id == id
> fmap (f . g) == fmap f . fmap g

The instances of 'Functor' for lists, 'Data.Maybe.Maybe' and 'System.IO.IO'
satisfy these laws.
+> fmap id == id
+> fmap (f . g) == fmap f . fmap g
}
class Functor f where