THEff: TH implementation of effects.
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
This package implements effects, as alternative to monad transformers. Actually, the effects themselves are created without the use of TH, but the binding of nested effects described by mkEff splice. For example.
mkEff "MyReader" ''Reader ''Int ''Lift mkEff "SomeState" ''State ''Bool ''MyReader mkEff "OtherRdr" ''Reader ''Float ''SomeState main:: IO () main = do r <- runMyReader 100 $ runSomeState False $ runOtherRdr pi $ do i :: Int <- ask -- MyReader f :: Float <- ask -- OtherRdr b <- get -- SomeState put $ not b -- SomeState lift $ putStrLn "print from effect!" -- Lift return $ show $ fromIntegral i * f print r
For more information about extensible effects , see the original paper at http://okmij.org/ftp/Haskell/extensible/exteff.pdf. But, this package is significantly different from the original. It uses a chains of ordinary GADTs created by TH. No Typeable, unsafe... , ExistentialQuantification ...
Properties
Versions | 0.1.0.1, 0.1.0.1, 0.1.1.0, 0.1.3, 0.1.4 |
---|---|
Change log | None available |
Dependencies | base (>=4.8 && <4.9), template-haskell (>=2.4 && <2.11) [details] |
License | BSD-3-Clause |
Author | Kolodezny Diver |
Maintainer | kolodeznydiver@gmail.com |
Category | Control, Effect, TH |
Source repo | head: git clone https://github.com/KolodeznyDiver/THEff.git |
Uploaded | by kolodeznydiver at 2015-08-30T14:19:22Z |
Modules
[Index]
- Control
- Control.THEff
- Control.THEff.Catch
- Control.THEff.Exception
- Control.THEff.Fresh
- Control.THEff.Reader
- Control.THEff.State
- Control.THEff.Validator
- Control.THEff.Writer
- Control.THEff
Downloads
- THEff-0.1.0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees