diff options
Diffstat (limited to 'Haskell-book/18/Functions.hs')
| -rw-r--r-- | Haskell-book/18/Functions.hs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/Haskell-book/18/Functions.hs b/Haskell-book/18/Functions.hs new file mode 100644 index 0000000..841ecbd --- /dev/null +++ b/Haskell-book/18/Functions.hs @@ -0,0 +1,21 @@ +module Functions where + +j :: Monad m => m (m a) -> m a +j = flip (>>=) id + +l1 :: Monad m => (a -> b) -> m a -> m b +l1 = fmap + +l2 :: Monad m => (a -> b -> c) -> m a -> m b -> m c +l2 f xs ys = f <$> xs <*> ys + +a :: Monad m => m a -> m (a -> b) -> m b +a xs f = f <*> xs + +meh :: Monad m => [a] -> (a -> m b) -> m [b] +meh xs f = rec $ fmap f xs + where rec [] = return [] + rec (x:xs) = (:) <$> x <*> (rec xs) + +flipType :: Monad m => [m a] -> m [a] +flipType = flip meh id |
