remote-monad: An parametrizable Remote Monad, and parametrizable Applicative Functor
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
An implementation of the concepts behind Remote Monads. There is support for various bundling strategies.
{-# LANGUAGE GADTs #-} {-# LANGUAGE KindSignatures #-} module Main where 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 m = runMonad runWP m 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.0, 0.1.0.1, 0.2 |
---|---|
Change log | None available |
Dependencies | base (>=4.7 && <5), natural-transformation (>=0.3 && <0.4), transformers (>=0.4 && <0.6) [details] |
License | BSD-3-Clause |
Copyright | (c) 2016 The University of Kansas |
Author | Andy Gill, Justin Dawson |
Maintainer | andygill@ku.edu |
Category | Control |
Source repo | head: git clone git://github.com/ku-fpg/remote-monad |
Uploaded | by AndyGill at 2016-01-28T21:24:34Z |
Modules
[Index]
Downloads
- remote-monad-0.1.0.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees