transient: composing programs with multithreading, events and distributed computing

[ concurrency, control, library, mit ] [ Propose Tags ]

See http://github.com/agocorona/transient In this release distributed primitives have been moved to the transient-universe package, and web primitives have been moved to the ghcjs-hplay package.


[Skip to Readme]

Modules

[Last Documentation]

  • Transient
    • Transient.Backtrack
    • Transient.Base
    • Transient.EVars
    • Transient.Indeterminism
    • Transient.Internals
    • Transient.Logged

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.0.4, 0.1.0.8, 0.1.0.9, 0.1.1, 0.3, 0.4.0, 0.4.1, 0.4.2, 0.4.2.2, 0.4.4, 0.4.4.1, 0.5.1, 0.5.3, 0.5.4, 0.5.5, 0.5.6, 0.5.8, 0.5.9, 0.5.9.1, 0.5.9.2, 0.6.0.0, 0.6.0.1, 0.6.3, 0.7.0.0
Change log ChangeLog.md
Dependencies base (<0), bytestring, containers, directory, mtl, random, stm, time, transformers [details]
License MIT
Author Alberto G. Corona
Maintainer agocorona@gmail.com
Revised Revision 1 made by HerbertValerioRiedel at 2017-03-30T06:37:57Z
Category Control
Home page http://www.fpcomplete.com/user/agocorona
Bug tracker https://github.com/agocorona/transient/issues
Source repo head: git clone https://github.com/agocorona/transient
Uploaded by AlbertoCorona at 2017-03-29T15:50:29Z
Distributions
Reverse Dependencies 4 direct, 1 indirect [details]
Downloads 19071 total (70 in the last 30 days)
Rating 2.5 (votes: 3) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2017-03-29 [all 3 reports]

Readme for transient-0.5.3

[back to package description]

NOTE: distributed computing and web primitives have been moved to transient-universe and ghcjs-hplay

transient

One of the biggest dreams of software engineering is unrestricted composability.

This may be put in these terms:

let ap1 and ap2 two applications with arbitrary complexity, with all effects including multiple threads, asynchronous IO, indeterminism, events and perhaps, distributed computing.

Then the combinations:

 - ap1 <|> ap2          -- Alternative expression
 - ap1 >>= \x -> ap2    -- monadic sequence
 - ap1 <> ap2           -- monoidal expression
 - (,) <$> ap1 <*> ap2  -- Applicative expression

are possible if the types match, and generate new applications that are composable as well.

Transient does exactly that.

The operators <|> and <> can be used for concurrency, the operator <|> can be used for parallelism and >>= for sequencing of threads and/or distributed processes. So even in the presence of these effects and others, everything is composable.

For this purpose transient is an extensible effects monad with all major effects and primitives for parallelism, events, asynchronous IO, early termination, non-determinism logging and distributed computing. Since it is possible to extend it with more effects without adding monad transformers, the composability is assured.

Documentation

The Wiki is more user oriented

My video sessions in livecoding.tv not intended as tutorials or presentations, but show some of the latest features running.

The articles are more technical:

These articles contain executable examples (not now, since the site no longer support the execution of haskell snippets).