Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
applicative [2014/08/24 17:44] nikolaj |
applicative [2014/08/25 00:05] nikolaj |
||
---|---|---|---|
Line 3: | Line 3: | ||
=== Definition === | === Definition === | ||
<code/Haskell> | <code/Haskell> | ||
+ | -- definition | ||
class Functor f => Applicative f where | class Functor f => Applicative f where | ||
pure :: a -> f a | pure :: a -> f a | ||
Line 8: | Line 9: | ||
</code> | </code> | ||
- | === Laws === | + | pure id <*> v $\ \leftrightsquigarrow\ $ v |
- | | pure id <*> v $\ \leftrightsquigarrow\ $ v | | + | |
- | | pure f <*> pure x $\ \leftrightsquigarrow\ $ pure (f x) | | + | pure f <*> pure x $\ \leftrightsquigarrow\ $ pure (f x) |
- | | u <*> pure y $\ \leftrightsquigarrow\ $ pure ($ y) <*> u | | + | u <*> pure y $\ \leftrightsquigarrow\ $ pure ($ y) <*> u |
- | | u <*> (v <*> w) $\ \leftrightsquigarrow\ $ pure (.) <*> u <*> v <*> w | | + | u <*> (v <*> w) $\ \leftrightsquigarrow\ $ pure (.) <*> u <*> v <*> w |
==== Discussion ==== | ==== Discussion ==== |