plan-applicative alternatives and similar packages
Based on the "Control" category.
Alternatively, view plan-applicative 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) -
selective
Selective Applicative Functors: Declare Your Effects Statically, Select Which to Execute Dynamically -
ComonadSheet
A library for expressing "spreadsheet-like" computations with absolute and relative references, using fixed-points of n-dimensional comonads. -
auto
Haskell DSL and platform providing denotational, compositional api for discrete-step, locally stateful, interactive programs, games & automations. http://hackage.haskell.org/package/auto -
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 -
monad-validate
DISCONTINUED. (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 -
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.
CodeRabbit: AI Code Reviews for Developers

Do you think we are missing an alternative of plan-applicative or a related project?
README
plan-applicative
A writer-like Applicative/Arrow for resource estimation and progress tracking.
Motivation
I run scripts in my machine. Their logic is simple and predictable, even if the steps are many and take long to complete.
The following infuriating situations happen:
- The script fails at minute 45 because of a syntax error.
- The script fails at minute 45 because it requests a missing resource whose availability could have been checked when the script started.
- It is difficult to ascertain how far along the execution we are at minute 45.
The first problem is solved by using a statically typed language or, for dynamic languages, some kind of static analysis tool.
For the second problem, we need to have a summary of the resources that the computation will require, before running the computation itself. This can be done by hand, adding a new check at the beginning of the script when we change something further down. But it's easy to forget to do so, and the initial checks can become out of sync with the main code. It would be nice if each step of the computation foresaw its own resource needs and these accumulated automatically as we composed the steps.
For the third problem, we need a channel that notifies you whenever a step of the computation starts or finishes. Bonus points if nested steps are supported.
Problems
Currently the ApplicativeDo extension doesn't work very well with this package's Applicative because an extant bug in GHC: #10892. Sequencing actions whose values are ignored gives an error.
Inspiration
StaticArrow from the arrows package.
Not exactly an inspiration (as I don't understand the stuff well enough) but Tomas Petricek's work on "coeffects" seems relevant for helping applications to "fail early". See section 1.1 of his thesis.