Cabal revisions of interruptible-0.1.1.1
Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.
revision 1
--- Initial interruptible.cabal generated by cabal init. For further --- documentation, see http://haskell.org/cabal/users-guide/--name: interruptible-version: 0.1.1.1-synopsis: Monad transformers that can be run and resumed later, conserving their context.-description:- Given an inner monad @M@ and a transformer @T@, if T is an interruptible transformer,- it becomes possible to intercalate functions over its context with functions over the- inner monad. That is, code like this:- .- @- runT (f 1 >>= g)- where- f :: Int -> T M a- g :: a -> T M b- @- .- Can be broken up like this:- .- @- do- let c0 = inTCtx 1- c1 <- resume f ct1- _ <- resume g ct2- @- .- That makes it possible to intercalate the execution of different contexts, and- treat contexts like data, for iterating or returning them.- .- As shown on the example, interruptible transformers are resumed with the @resume@ function.- State may be managed by specialized functions usually named as @inTransfomerCtx@ and- @peelTransformerCtx@ that enclose a value in an initial context and retrieve the- value from a context.- .- Interruptible transformers can be stacked. On this case, they must be resumed with a- composition of @resume@ calls, and their contexts must be created and peeled on the inverse- order that they appear on the stack. Like:- .- @- do- let c0 = inT2Ctx . inT1Ctx $ 1- c1 <- (resume . resume) f ct1- _ <- (resume . resume) g ct2- where- f :: Monad m => Int -> T1 T2 M a- g :: Monad m => a -> T1 T2 M b- @- .- For convenience, the @Interruptible@ module exports the @resume2@ to @resume5@- functions as composotions of resume. They can be composed further as in- @resume7 = resume3 . resume4@ if necessary.- .- This package also contains the appliable instantiations of Interruptible for the mtl transformers,- the @intercalateWith@ function, that intercalates calls of a function through a list- of contexts and parameters, and the @SafeIO@ module that lifts IOException treatment from the- base monad into the current resumed context.-homepage: https://sealgram.com/git/haskell/interruptible/-license: BSD3-license-file: LICENSE-author: Marcos Dumay de Medeiros-maintainer: marcos@marcosdumay.com---copyright: -category: Control-build-type: Simple--- extra-source-files: -cabal-version: >=1.10--source-repository head- type: git- location: https://sealgram.com/git/haskell/interruptible/- branch: master--source-repository this- type: git- location: https://sealgram.com/git/haskell/interruptible/- tag: 0.1.1.1---library- exposed-modules:- Control.Monad.Trans.Interruptible- Control.Monad.Trans.SafeIO- other-modules: Control.Monad.Trans.Interruptible.Class- other-extensions: TypeFamilies- build-depends:- base >=4.7 && <5,- transformers,- monad-control,- lifted-base,- either- hs-source-dirs: src- default-language: Haskell2010--Test-suite all- type: detailed-0.9- test-module: Test- hs-source-dirs:- test- build-depends:- base >=4.7 && <5.0,- Cabal >= 1.9.2,- either,- transformers,- interruptible- ghc-options: -Wall -fno-warn-unused-do-bind -fwarn-incomplete-patterns -threaded- default-language: Haskell2010+-- Initial interruptible.cabal generated by cabal init. For further +-- documentation, see http://haskell.org/cabal/users-guide/ + +name: interruptible +version: 0.1.1.1 +x-revision: 1 +synopsis: Monad transformers that can be run and resumed later, conserving their context. +description: + Given an inner monad @M@ and a transformer @T@, if T is an interruptible transformer, + it becomes possible to intercalate functions over its context with functions over the + inner monad. That is, code like this: + . + @ + runT (f 1 >>= g) + where + f :: Int -> T M a + g :: a -> T M b + @ + . + Can be broken up like this: + . + @ + do + let c0 = inTCtx 1 + c1 <- resume f c0 + _ <- resume g c2 + @ + . + That makes it possible to intercalate the execution of different contexts, and + treat contexts like data, for iterating or returning them. + . + As shown on the example, interruptible transformers are resumed with the @resume@ function. + State may be managed by specialized functions usually named as @inTransfomerCtx@ and + @peelTransformerCtx@ that enclose a value in an initial context and retrieve the + value from a context. + . + Interruptible transformers can be stacked. On this case, they must be resumed with a + composition of @resume@ calls, and their contexts must be created and peeled on the inverse + order that they appear on the stack. Like: + . + @ + do + let c0 = inT2Ctx . inT1Ctx $ 1 + c1 <- (resume . resume) f c0 + _ <- (resume . resume) g c1 + where + f :: Monad m => Int -> T1 T2 M a + g :: Monad m => a -> T1 T2 M b + @ + . + For convenience, the @Interruptible@ module exports the @resume2@ to @resume5@ + functions as composotions of resume. They can be composed further as in + @resume7 = resume3 . resume4@ if necessary. + . + This package also contains the appliable instantiations of Interruptible for the mtl transformers, + the @intercalateWith@ function, that intercalates calls of a function through a list + of contexts and parameters, and the @SafeIO@ module that lifts IOException treatment from the + base monad into the current resumed context. +homepage: https://sealgram.com/git/haskell/interruptible/ +license: BSD3 +license-file: LICENSE +author: Marcos Dumay de Medeiros +maintainer: marcos@marcosdumay.com +--copyright: +category: Control +build-type: Simple +-- extra-source-files: +cabal-version: >=1.10 + +source-repository head + type: git + location: https://sealgram.com/git/haskell/interruptible/ + branch: master + +source-repository this + type: git + location: https://sealgram.com/git/haskell/interruptible/ + tag: 0.1.1.1 + + +library + exposed-modules: + Control.Monad.Trans.Interruptible + Control.Monad.Trans.SafeIO + other-modules: Control.Monad.Trans.Interruptible.Class + other-extensions: TypeFamilies + build-depends: + base >=4.7 && <5, + transformers, + monad-control, + lifted-base, + either + hs-source-dirs: src + default-language: Haskell2010 + +Test-suite all + type: detailed-0.9 + test-module: Test + hs-source-dirs: + test + build-depends: + base >=4.7 && <5.0, + Cabal >= 1.9.2, + either, + transformers, + interruptible + ghc-options: -Wall -fno-warn-unused-do-bind -fwarn-incomplete-patterns -threaded + default-language: Haskell2010
revision 2
name: interruptible version: 0.1.1.1 -x-revision: 1 +x-revision: 2 synopsis: Monad transformers that can be run and resumed later, conserving their context. description: Given an inner monad @M@ and a transformer @T@, if T is an interruptible transformer, it becomes possible to intercalate functions over its context with functions over the inner monad. That is, code like this: . - @ - runT (f 1 >>= g) - where - f :: Int -> T M a - g :: a -> T M b - @ + > runT (f 1 >>= g) + > where + > f :: Int -> T M a + > g :: a -> T M b . Can be broken up like this: . - @ - do - let c0 = inTCtx 1 - c1 <- resume f c0 - _ <- resume g c2 - @ + > do + > let c0 = inTCtx 1 + > c1 <- resume f c0 + > _ <- resume g c2 . That makes it possible to intercalate the execution of different contexts, and treat contexts like data, for iterating or returning them. composition of @resume@ calls, and their contexts must be created and peeled on the inverse order that they appear on the stack. Like: . - @ - do - let c0 = inT2Ctx . inT1Ctx $ 1 - c1 <- (resume . resume) f c0 - _ <- (resume . resume) g c1 - where - f :: Monad m => Int -> T1 T2 M a - g :: Monad m => a -> T1 T2 M b - @ + > do + > let c0 = inT2Ctx . inT1Ctx $ 1 + > c1 <- (resume . resume) f c0 + > _ <- (resume . resume) g c1 + > where + > f :: Monad m => Int -> T1 T2 M a + > g :: Monad m => a -> T1 T2 M b . For convenience, the @Interruptible@ module exports the @resume2@ to @resume5@ functions as composotions of resume. They can be composed further as in