The remote-monad package

[ Tags: bsd3, control, library ] [ Propose Tags ]

An implementation of the concepts behind Remote Monads. There is support for various bundling strategies.

{-# LANGUAGE GADTs #-}
{-# LANGUAGE KindSignatures #-}

module Main where

import Control.Natural (nat, (#))
import Control.Remote.Monad
import Control.Remote.Monad.Packet.Weak

data Command :: * where
  Say :: String -> Command

data Procedure :: * -> * where
  Temperature :: Procedure Int

say :: String -> RemoteMonad Command Procedure ()
say s = command (Say s)

temperature :: RemoteMonad Command Procedure Int
temperature = procedure Temperature

runWP :: WeakPacket Command Procedure a -> IO a
runWP (Command (Say s))       = print s
runWP (Procedure Temperature) = return 42

send :: RemoteMonad Command Procedure a -> IO a
send = run $ runMonad $ nat runWP

main = send $ do
  say "Howdy doodly do"
  say "How about a muffin?"
  t <- temperature
  say (show t ++ "F")

Properties

Versions 0.1.0.0, 0.1.0.1, 0.2 (info)
Dependencies base (>=4.8 && <5), natural-transformation (>=0.3.1 && <0.4), transformers (>=0.4 && <0.6) [details]
License BSD3
Copyright (c) 2016 The University of Kansas
Author Andy Gill, Justin Dawson
Maintainer andygill@ku.edu
Category Control
Source repository head: git clone git://github.com/ku-fpg/remote-monad
Uploaded Mon Feb 8 22:09:25 UTC 2016 by AndyGill
Updated Thu Feb 11 15:04:04 UTC 2016 by AndyGill to revision 1
Distributions NixOS:0.2
Downloads 215 total (8 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2016-02-12 [all 1 reports]
Hackage Matrix CI

Modules

[Index]

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

For package maintainers and hackage trustees