Skip to content

Instantly share code, notes, and snippets.

@xenophobia
Created June 2, 2013 23:26
Show Gist options
  • Select an option

  • Save xenophobia/5695336 to your computer and use it in GitHub Desktop.

Select an option

Save xenophobia/5695336 to your computer and use it in GitHub Desktop.
{- http://d.hatena.ne.jp/majiang/20130602/1370188046 -}
-- return, >>= は所与ってことにする
s :: a -- 0
ms :: m a -- 1
f :: a -> b -- 4
mf :: m (a -> b) -- 6
f s :: b
return (f s) :: m b
\ s -> return (f s) :: a -> m b -- 2[0] {- fixed -}
(>>=) :: m a -> (a -> m b) -> m b
(ms >>=) :: (a -> m b) -> m b -- 3[1]
ms >>= \ s -> return (f s) :: m b -- 5[2][3] {- fixed -}
\ f -> ms >>= \ s -> return (f s) :: (a -> b) -> m b -- 7[4][5] {- fixed -}
(>>=) :: m (a -> b) -> ((a -> b) -> m b) -> m b
(mf >>=) :: ((a -> b) -> m b) -> m b -- 8[6]
mf >>= \ f -> ms >>= \ s -> return (f s) :: m b -- [7][8]
mf <*> ms :: m b -- 9[def. of <*>]
(<*>) :: m (a -> b) -> m a -> m b -- [9]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment