Difference between revisions of "Category theory/Natural transformation"

From HaskellWiki
Jump to navigation Jump to search
m (Better section structure)
(In fact, even has a more general type (Integral a => a -> Bool) than described here)
Line 16: Line 16:
   
 
:<math>\eta : \Phi \to \Psi</math>
 
:<math>\eta : \Phi \to \Psi</math>
  +
<haskell>maybeToList :: Maybe a -> [a]</haskell>
   
 
{| Border=2 CellPadding=2 CellSpacing=2 | Dia
 
{| Border=2 CellPadding=2 CellSpacing=2 | Dia
Line 48: Line 49:
   
 
=== Horizontal arrows ===
 
=== Horizontal arrows ===
  +
  +
/Note: <hask>even</hask> has a more general type (<hask>Integral a => a -> Bool</hask>) than described here/
   
 
:<math>f : X \to Y</math>
 
:<math>f : X \to Y</math>
  +
<haskell>
  +
even :: Int -> Bool
  +
</haskell>
   
 
{| Border=2 CellPadding=2 CellSpacing=2
 
{| Border=2 CellPadding=2 CellSpacing=2

Revision as of 19:21, 2 October 2006

Example: maybeToList

 map even $ maybeToList $ Just 5

yields the same as

 maybeToList $ map even $ Just 5

yields: both yield

 [False]

Vertical arrows

maybeToList :: Maybe a -> [a]
maybeToList :: Maybe Int -> [Int]
Nothing []
Just 0 [0]
Just 1 [1]
maybeToList :: Maybe Bool -> [Bool]
Nothing []
Just True [True]
Just False [False]

Horizontal arrows

/Note: even has a more general type (Integral a => a -> Bool) than described here/

 even :: Int -> Bool
map even:: Maybe Int -> Maybe Bool
Nothing Nothing
Just 0 Just True
Just 1 Just False
map even:: [Int] -> [Bool]
[] []
[0] [T]rue
[1] [F]alse

Commutativity of diagram

map even . maybeToList maybeToList . map even
Nothing [] []
Just 0 [True] [True]
Just 1 [False] [False]