# dunai-core: Generalised reactive framework supporting classic, arrowized and monadic FRP. (Core library fork.)

Dunai is a DSL for strongly-typed CPS-based composable transformations.

Dunai is based on a concept of Monadic Stream Functions (MSFs). MSFs are
transformations defined by a function `unMSF :: MSF m a b -> a -> m (b, MSF m a b)`

that executes one step of a simulation, and produces an output in a monadic
context, and a continuation to be used for future steps.

MSFs are a generalisation of the implementation mechanism used by Yampa, Wormholes and other FRP and reactive implementations.

When combined with different monads, they produce interesting effects. For
example, when combined with the `Maybe`

monad, they become transformations
that may stop producing outputs (and continuations). The `Either`

monad gives
rise to MSFs that end with a result (akin to Tasks in Yampa, and Monadic
FRP).

Flattening, that is, going from some structure `MSF (t m) a b`

to `MSF m a b`

for a specific transformer `t`

often gives rise to known FRP constructs. For
instance, flattening with `EitherT`

gives rise to switching, and flattening
with `ListT`

gives rise to parallelism with broadcasting.

MSFs can be used to implement many FRP variants, including Arrowized FRP, Classic FRP, and plain reactive programming. Arrowized and applicative syntax are both supported.

For a very detailed introduction to MSFs, see: http://dl.acm.org/citation.cfm?id=2976010 (mirror: http://www.cs.nott.ac.uk/~psxip1/#FRPRefactored).

## Modules

[Index] [Quick Jump]

## Downloads

- dunai-core-0.5.1.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)

Versions [RSS] | 0.5.1.0 |
---|---|

Dependencies | base (>=4.10 && <4.13), MonadRandom (>=0.5 && <0.6), transformers (>=0.5 && <0.6), transformers-base (>=0.4 && <0.5) [details] |

License | BSD-3-Clause |

Author | Ivan Perez, Manuel Bärenz |

Maintainer | programming@manuelbaerenz.de |

Category | Reactivity, FRP |

Home page | https://github.com/turion/dunai-core |

Source repo | head: git clone git@github.com:turion/dunai-core |

Uploaded | by turion at 2018-10-21T18:28:56Z |

Distributions | NixOS:0.5.1.0 |

Downloads | 731 total (7 in the last 30 days) |

Rating | (no votes yet) [estimated by Bayesian average] |

Your Rating | |

Status | Docs available [build log] Last success reported on 2018-10-21 [all 1 reports] |