packages feed

ramus-0.0.1: README.md

# Ramus

Ramus is a lightweight FRP-like library heavily inspired by the Elm Signal implementation,
in fact, it's a direct port of the [purescript-signal](https://github.com/bodil/purescript-signal) library,
in Haskell.
Where possible and sensible, it tries to maintain API equivalence with Elm.

See [the Elm documentation](http://elm-lang.org:1234/guide/reactivity#signals) for details on usage and principles.

## Haskell Usage Patterns

Haskell depends on `IO` to manage side effects, where Elm's runtime generally manages them for you.
`ramus` provides the `Signal.runSignal` function for running effectful signals.

```haskell
module Main where

import Signal

hello :: Signal String
hello = constant "Hello Joe!"

helloEffect :: Signal (IO ())
helloEffect = hello ~> print

main :: IO ()
main = runSignal helloEffect
```

This simple example takes a constant signal which contains the string `"Hello Joe!"`
and maps it over the `print` function, which has the type `(Show a) => a -> IO()`, thus taking the `String`
content of the signal and turning it into an effect which logs the provided string to the user's console.

This gives us a `Signal (IO ())`. We use `runSignal` to take the signal of effects and run each effect
in turn—in our case, just the one effect which prints `"Hello Joe!"` to the console.

## API Documentation

* TODO: Add to hackage

## Usage Examples

* TODO