Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
applicative [2014/08/24 17:44] nikolaj |
applicative [2014/08/25 00:06] 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 | | ||