list-t 0.4.5.1 → 0.4.6
raw patch · 2 files changed
+24/−11 lines, 2 filesdep +basedep ~HTFdep ~base-preludedep ~mmorph
Dependencies added: base
Dependency ranges changed: HTF, base-prelude, mmorph, monad-control, transformers
Files
- library/ListT.hs +17/−4
- list-t.cabal +7/−7
library/ListT.hs view
@@ -19,6 +19,7 @@ fromFoldable, fromMVar, unfold,+ unfoldM, repeat, -- * Transformation utilities -- | @@ -72,8 +73,8 @@ return (Just (h1, (mappend s1' (ListT m2)))) instance Functor m => Functor (ListT m) where- fmap f (ListT m) =- ListT $ (fmap . fmap) (\(a, b) -> (f a, fmap f b)) m+ fmap f =+ ListT . (fmap . fmap) (f *** fmap f) . unListT instance (Monad m, Functor m) => Applicative (ListT m) where pure = @@ -114,8 +115,8 @@ lift . liftIO instance MFunctor ListT where- hoist f (ListT m) =- ListT $ f $ m >>= return . fmap (\(h, t) -> (h, hoist f t))+ hoist f =+ ListT . f . (fmap . fmap) (id *** hoist f) . unListT instance MMonad ListT where embed f (ListT m) =@@ -291,6 +292,18 @@ unfold :: (MonadCons m) => (b -> Maybe (a, b)) -> b -> m a unfold f s = maybe mzero (\(h, t) -> cons h (unfold f t)) (f s)++-- |+-- Construct by unfolding a monadic data structure+--+-- This is the most memory-efficient way to construct a ListT where+-- the length depends on the inner monad.+{-# INLINABLE unfoldM #-}+unfoldM :: (Monad m) => (b -> m (Maybe (a, b))) -> b -> ListT m a+unfoldM f = go where+ go s = ListT $ f s >>= \case+ Nothing -> return Nothing+ Just (a,r) -> return (Just (a, go r)) -- | -- Produce an infinite stream.
list-t.cabal view
@@ -1,7 +1,7 @@ name: list-t version:- 0.4.5.1+ 0.4.6 synopsis: ListT done right description:@@ -43,12 +43,12 @@ exposed-modules: ListT build-depends:- mmorph == 1.0.*,- monad-control >= 0.3 && < 1.1,+ mmorph == 1.*,+ monad-control >= 0.3 && < 2, mtl == 2.*, transformers-base == 0.4.*,- transformers >= 0.3 && < 0.5,- base-prelude == 0.1.*+ transformers >= 0.3 && < 0.6,+ base-prelude < 2 default-extensions: Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFunctor, DeriveGeneric, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, ImpredicativeTypes, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples default-language:@@ -65,9 +65,9 @@ build-depends: list-t, mmorph,- HTF == 0.12.*,+ HTF == 0.13.*, mtl-prelude < 3,- base-prelude >= 0.1.3 && < 0.2+ base-prelude default-extensions: Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFunctor, DeriveGeneric, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, ImpredicativeTypes, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples default-language: