tardis alternatives and similar packages
Based on the "Control" category.
Alternatively, view tardis alternatives based on common mentions on social networks and blogs.
-
transient
A full stack, reactive architecture for general purpose programming. Algebraic and monadically composable primitives for concurrency, parallelism, event handling, transactions, multithreading, Web, and distributed computing with complete de-inversion of control (No callbacks, no blocking, pure state) -
classy-prelude
Type classes for mapping, folding, and traversing monomorphic containers -
classy-prelude-yesod
Type classes for mapping, folding, and traversing monomorphic containers -
distributed-closure
Serializable closures for distributed programming. -
auto
Haskell DSL and platform providing denotational, compositional api for discrete-step, locally stateful, interactive programs, games & automations. http://hackage.haskell.org/package/auto -
selective
Selective Applicative Functors: Declare Your Effects Statically, Select Which to Execute Dynamically -
extensible-effects
Extensible Effects: An Alternative to Monad Transformers -
ComonadSheet
A library for expressing "spreadsheet-like" computations with absolute and relative references, using fixed-points of n-dimensional comonads. -
abstract-par
Type classes generalizing the functionality of the 'monad-par' library. -
hask
Category theory for Haskell with a lens flavor (you need GHC 7.8.3, not 7.8.2 to build this!) -
these
An either-or-both data type, with corresponding hybrid error/writer monad transformer. -
transient-universe
A Cloud monad based on transient for the creation of Web and reactive distributed applications that are fully composable, where Web browsers are first class nodes in the cloud -
cloud-haskell
This is an umbrella development repository for Cloud Haskell -
distributed-fork
A distributed data processing framework in Haskell. -
monad-validate
(NOTE: REPOSITORY MOVED TO NEW OWNER: https://github.com/lexi-lambda/monad-validate) A Haskell monad transformer library for data validation -
distributed-process-platform
DEPRECATED (Cloud Haskell Platform) in favor of distributed-process-extras, distributed-process-async, distributed-process-client-server, distributed-process-registry, distributed-process-supervisor, distributed-process-task and distributed-process-execution -
freer-effects
An implementation of "Freer Monads, More Extensible Effects". -
monad-control
Lift control operations, like exception catching, through monad transformers -
effect-monad
Provides 'graded monads' and 'parameterised monads' to Haskell, enabling fine-grained reasoning about effects. -
ixmonad
Provides 'graded monads' and 'parameterised monads' to Haskell, enabling fine-grained reasoning about effects. -
operational
Implement monads by specifying instructions and their desired operational semantics. -
monad-time
Type class for monads which carry the notion of the current time. -
in-other-words
A higher-order effect system where the sky's the limit
WorkOS - The modern identity platform for B2B SaaS
Do you think we are missing an alternative of tardis or a related project?
README
TardisT
The State monad allows you to send information forwards to the future, or to receive such information from the past. The Reverse State monad allows you to do the reverse: send information backwards to the past, or receive information from the future.
TardisT is a monad transformer that provides state operations that allow you to send information to both the future and the past, as well as receive information from both directions. It is isomorphic to a StateT on top of a ReverseStateT, or vice-versa.
See Control/Monad/Tardis/Example.hs for an example.
You can decide how evil you would like this library to be. By default, it will not include typeclass instances that require "scary" language extensions.
cabal install tardis
You can instead install it with the additional instances by indicating that it is OK:
cabal install -f use-undecidable-instances
You can tell whether you have the extra instances with this ghci session:
ghci> :m +Control.Monad.Tardis
ghci> :m +Control.Monad.Trans.Identity
ghci> :t IdentityT (return ()) >> getPast
If you don't have the additional instances, it will say the type is:
(Monad m, MonadTardis bw b (IdentityT m)) => IdentityT m b
If you do have the additional instances, it will say the type is:
MonadTardis bw b m => IdentityT m b
See Control/Monad/Tardis.hs for details.
This was inspired by Luke Palmer's blog post on the "reverse state monad".
http://lukepalmer.wordpress.com/2008/08/10/mindfuck-the-reverse-state-monad/
See also:
http://panicsonic.blogspot.com/2007/12/backwards-state-or-power-of-laziness.html
(c) 2012 Dan Burton