list-t 0.3.1 → 0.3.2
raw patch · 3 files changed
+28/−2 lines, 3 filesdep ~mmorph
Dependency ranges changed: mmorph
Files
- library/ListT.hs +7/−1
- list-t.cabal +2/−1
- tests/Main.hs +19/−0
library/ListT.hs view
@@ -42,7 +42,7 @@ import Control.Monad.Trans.Class import Control.Monad.Trans.Reader import Control.Monad.Trans.Maybe-import Control.Monad.Trans.Control+import Control.Monad.Trans.Control hiding (embed, embed_) import Control.Monad.Base -- |@@ -114,6 +114,12 @@ instance MFunctor ListT where hoist f (ListT m) = ListT $ f $ m >>= return . fmap (\(h, t) -> (h, hoist f t))++instance MMonad ListT where+ embed f (ListT m) =+ f m >>= \case+ Nothing -> mzero+ Just (h, t) -> ListT $ return $ Just $ (h, embed f t) instance MonadBase b m => MonadBase b (ListT m) where liftBase =
list-t.cabal view
@@ -1,7 +1,7 @@ name: list-t version:- 0.3.1+ 0.3.2 synopsis: ListT done right description:@@ -63,6 +63,7 @@ Main.hs build-depends: list-t,+ mmorph, HTF == 0.12.*, mtl-prelude < 3, base-prelude >= 0.1.3 && < 0.2
tests/Main.hs view
@@ -2,11 +2,30 @@ import BasePrelude hiding (toList) import MTLPrelude+import Control.Monad.Morph import Test.Framework import qualified ListT as L main = htfMain $ htf_thisModulesTests+++-- * MMonad+-------------------------++-- embed lift = id+prop_mmonadLaw1 (l :: [Int]) =+ let s = L.fromFoldable l+ in runIdentity $ streamsEqual s (embed lift s)++-- embed f (lift m) = f m+prop_mmonadLaw2 l =+ let s = (L.fromFoldable :: [Int] -> L.ListT Identity Int) l+ f = MaybeT . fmap Just+ run = runIdentity . L.toList . runMaybeT+ in + run (f s) == + run (embed f (lift s)) -- * Applicative