diff options
| author | Eugen Wissner <belka@caraus.de> | 2025-12-11 10:28:11 +0100 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2025-12-11 10:28:11 +0100 |
| commit | 98329e0a3dd4f78b5d815ac3896272ec70904901 (patch) | |
| tree | 80f9c56cfe2ac20232358f236d32e84bd683be1b /Haskell-book/18/Functions.hs | |
| parent | 3624c712d72d246f21d4e710cec7c11e052e0326 (diff) | |
| download | book-exercises-98329e0a3dd4f78b5d815ac3896272ec70904901.tar.gz | |
Add remaining haskell book exercises
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 |
