[commit: ghc] master: Add doctest examples for Data.Functor. (6825558)
git at git.haskell.org
git at git.haskell.org
Tue Oct 21 21:50:48 UTC 2014
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/68255588f89462e542c502f6f92548712808032f/ghc
>---------------------------------------------------------------
commit 68255588f89462e542c502f6f92548712808032f
Author: Michael Orlitzky <michael at orlitzky.com>
Date: Tue Oct 21 15:02:11 2014 -0500
Add doctest examples for Data.Functor.
Summary:
Add doctest examples for the three standalone functions defined in
Data.Functor:
* Data.Functor.$>
* Data.Functor.<$>
* Data.Functor.void
This is part of a larger plan to add examples for the functions in
base, and to eventually enable automatic testing of them.
Reviewers: austin, hvr, ekmett
Reviewed By: austin
Subscribers: hvr, ekmett, thomie, carter, ezyang, simonmar
Differential Revision: https://phabricator.haskell.org/D352
>---------------------------------------------------------------
68255588f89462e542c502f6f92548712808032f
libraries/base/Data/Functor.hs | 105 +++++++++++++++++++++++++++++++++++++++--
1 file changed, 102 insertions(+), 3 deletions(-)
diff --git a/libraries/base/Data/Functor.hs b/libraries/base/Data/Functor.hs
index 878445f..010ab50 100644
--- a/libraries/base/Data/Functor.hs
+++ b/libraries/base/Data/Functor.hs
@@ -25,9 +25,42 @@ module Data.Functor
import GHC.Base ( Functor(..), const, flip )
+-- $setup
+-- Allow the use of Prelude in doctests.
+-- >>> import Prelude
+
infixl 4 <$>
-- | An infix synonym for 'fmap'.
+--
+-- __Examples__:
+--
+-- Convert from a 'Maybe' 'Int' to a 'Maybe' 'String' using 'show':
+--
+-- >>> show <$> Nothing
+-- Nothing
+-- >>> show <$> Just 3
+-- Just "3"
+--
+-- Convert from an 'Either' 'Int' 'Int' to an 'Either' 'Int'
+-- 'String' using 'show':
+--
+-- >>> show <$> Left 17
+-- Left 17
+-- >>> show <$> Right 17
+-- Right "17"
+--
+-- Double each element of a list:
+--
+-- >>> (*2) <$> [1,2,3]
+-- [2,4,6]
+--
+-- Apply 'even' to the second element of a pair:
+--
+-- >>> even <$> (2,2)
+-- (2,True)
+--
+--
(<$>) :: Functor f => (a -> b) -> f a -> f b
(<$>) = fmap
@@ -35,11 +68,77 @@ infixl 4 $>
-- | Flipped version of '<$'.
--
--- /Since: 4.7.0.0/
+-- /Since: 4.7.0.0/
+--
+-- __Examples__:
+--
+-- Replace the contents of a 'Maybe' 'Int' with a constant 'String':
+--
+-- >>> Nothing $> "foo"
+-- Nothing
+-- >>> Just 90210 $> "foo"
+-- Just "foo"
+--
+-- Replace the contents of an 'Either' 'Int' 'Int' with a constant
+-- 'String', resulting in an 'Either' 'Int' 'String':
+--
+-- >>> Left 8675309 $> "foo"
+-- Left 8675309
+-- >>> Right 8675309 $> "foo"
+-- Right "foo"
+--
+-- Replace each element of a list with a constant 'String':
+--
+-- >>> [1,2,3] $> "foo"
+-- ["foo","foo","foo"]
+--
+-- Replace the second element of a pair with a constant 'String':
+--
+-- >>> (1,2) $> "foo"
+-- (1,"foo")
+--
($>) :: Functor f => f a -> b -> f b
($>) = flip (<$)
--- | @'void' value@ discards or ignores the result of evaluation, such as the
--- return value of an 'IO' action.
+-- | @'void' value@ discards or ignores the result of evaluation, such
+-- as the return value of an 'IO' action.
+--
+-- __Examples__:
+--
+-- Replace the contents of a 'Maybe' 'Int' with unit:
+--
+-- >>> void Nothing
+-- Nothing
+-- >>> void (Just 3)
+-- Just ()
+--
+-- Replace the contents of an 'Either' 'Int' 'Int' with unit,
+-- resulting in an 'Either' 'Int' '()':
+--
+-- >>> void (Left 8675309)
+-- Left 8675309
+-- >>> void (Right 8675309)
+-- Right ()
+--
+-- Replace every element of a list with unit:
+--
+-- >>> void [1,2,3]
+-- [(),(),()]
+--
+-- Replace the second element of a pair with unit:
+--
+-- >>> void (1,2)
+-- (1,())
+--
+-- Discard the result of an 'IO' action:
+--
+-- >>> mapM print [1,2]
+-- 1
+-- 2
+-- [(),()]
+-- >>> void $ mapM print [1,2]
+-- 1
+-- 2
+--
void :: Functor f => f a -> f ()
void = fmap (const ())
More information about the ghc-commits
mailing list