MyNixOS website logo
Description

Elm signal system for Haskell.

Ramus is a direct port of purescript-signal into Haskell, offering the Elm signal system for Haskell.

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 library, in Haskell. Where possible and sensible, it tries to maintain API equivalence with Elm.

See the Elm documentation 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.

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

Usage Examples

  • TODO.
Metadata

Version

0.1.2

License

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows