91 lines
1.4 KiB
Markdown
91 lines
1.4 KiB
Markdown
Applicative
|
|
===========
|
|
|
|
Functor
|
|
-------
|
|
|
|
```haskell
|
|
class Functor (f :: * -> *) where
|
|
fmap :: (a -> b) -> f a -> f b
|
|
(<$) :: a -> f b -> f a
|
|
```
|
|
|
|
```haskell
|
|
(<$>) :: Functor f => (a -> b) -> f a -> f b
|
|
```
|
|
|
|
```haskell
|
|
($>) :: Functor f => f a -> b -> f b
|
|
```
|
|
|
|
Applicatives
|
|
-------
|
|
|
|
```haskell
|
|
class Functor f => Applicative (f :: * -> *) where
|
|
pure :: a -> f a
|
|
(<*>) :: f (a -> b) -> f a -> f b
|
|
(*>) :: f a -> f b -> f b
|
|
(<*) :: f a -> f b -> f a
|
|
```
|
|
|
|
```haskell
|
|
orAlt :: (Alternative f, Monoid a) => f a -> f a
|
|
```
|
|
|
|
```haskell
|
|
orEmpty :: Alternative f => Bool -> a -> f a
|
|
```
|
|
|
|
```haskell
|
|
eitherA :: (Alternative f) => f a -> f b -> f (Either a b)
|
|
```
|
|
|
|
```haskell
|
|
pass :: Applicative f => f ()
|
|
```
|
|
|
|
|
|
Alternative
|
|
-------
|
|
|
|
```haskell
|
|
class Applicative f => Alternative (f :: * -> *) where
|
|
empty :: f a
|
|
(<|>) :: f a -> f a -> f a
|
|
some :: f a -> f [a]
|
|
many :: f a -> f [a]
|
|
```
|
|
|
|
```haskell
|
|
(<|>) :: Alternative f => f a -> f a -> f a
|
|
```
|
|
|
|
```haskell
|
|
many :: Alternative f => f a -> f [a]
|
|
```
|
|
|
|
```haskell
|
|
some :: Alternative f => f a -> f [a]
|
|
```
|
|
|
|
```haskell
|
|
optional :: Alternative f => f a -> f (Maybe a)
|
|
```
|
|
|
|
```haskell
|
|
liftA :: Applicative f => (a -> b) -> f a -> f b
|
|
```
|
|
|
|
```haskell
|
|
empty :: Alternative f => f a
|
|
```
|
|
|
|
```haskell
|
|
guarded :: (Alternative f) => (a -> Bool) -> a -> f a
|
|
```
|
|
|
|
```haskell
|
|
guardedA :: (Functor f, Alternative t) => (a -> f Bool) -> a -> f (t a)
|
|
```
|