monad docs
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
Welcome to project documentation.
|
||||||
|
|
||||||
|
- [Monad and Monadic Functions](docs/Monad.md)
|
||||||
+133
@@ -0,0 +1,133 @@
|
|||||||
|
Monads
|
||||||
|
======
|
||||||
|
|
||||||
|
#### Monad
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
class Applicative m => Monad (m :: * -> *) where
|
||||||
|
(>>=) :: m a -> (a -> m b) -> m b
|
||||||
|
(>>) :: m a -> m b -> m b
|
||||||
|
return :: a -> m a
|
||||||
|
GHC.Base.fail :: GHC.Base.String -> m a
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
(>=>) :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
(<=<) :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
(>>) :: Monad m => m a -> m b -> m b
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
(>>=) :: Monad m => m a -> (a -> m b) -> m b
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
forever :: Monad m => m a -> m b
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
join :: Monad m => m (m a) -> m a
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
filterM :: Monad m => (a -> m Bool) -> [a] -> m [a]
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
mapAndUnzipM :: Monad m => (a -> m (b, c)) -> [a] -> m ([b], [c])
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
zipWithM :: Monad m => (a -> b -> m c) -> [a] -> [b] -> m [c]
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
zipWithM_ :: Monad m => (a -> b -> m c) -> [a] -> [b] -> m ()
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
foldM :: (Monad m, Foldable t) => (b -> a -> m b) -> b -> t a -> m b
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
foldM_ :: (Monad m, Foldable t) => (b -> a -> m b) -> b -> t a -> m ()
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
replicateM :: Monad m => Int -> m a -> m [a]
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
replicateM_ :: Monad m => Int -> m a -> m ()
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
concatMapM :: Monad m => (a -> m [b]) -> [a] -> m [b]
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
guard :: Alternative f => Bool -> f ()
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
when :: Applicative f => Bool -> f () -> f ()
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
unless :: Applicative f => Bool -> f () -> f ()
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
liftM :: Monad m => (a1 -> r) -> m a1 -> m r
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
liftM2 :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
liftM3 :: Monad m => (a1 -> a2 -> a3 -> r) -> m a1 -> m a2 -> m a3 -> m r
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
liftM4 :: Monad m => (a1 -> a2 -> a3 -> a4 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m r
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
liftM5 :: Monad m => (a1 -> a2 -> a3 -> a4 -> a5 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m a5 -> m r
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
liftM' :: Monad m => (a -> b) -> m a -> m b
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
liftM2' :: Monad m => (a -> b -> c) -> m a -> m b -> m c
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
ap :: Monad m => m (a -> b) -> m a -> m b
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
(<$!>) :: Monad m => (a -> b) -> m a -> m b
|
||||||
|
```
|
||||||
|
|
||||||
|
#### MonadPlus
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
class (Alternative m, Monad m) => MonadPlus (m :: * -> *) where
|
||||||
|
mzero :: m a
|
||||||
|
mplus :: m a -> m a -> m a
|
||||||
|
-- Defined in ‘GHC.Base’
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell
|
||||||
|
mfilter :: MonadPlus m => (a -> Bool) -> m a -> m a
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user