{-# LANGUAGE ExplicitNamespaces #-}
module Choreography (
LocTm,
LocTy,
type (@),
mkLoc,
Choreo,
locally,
(~>),
(~~>),
cond,
cond',
Host,
Port,
HttpConfig,
mkHttpConfig,
runChoreo,
runChoreography
) where
import Choreography.Location
import Choreography.Choreo
import Choreography.Network
import Choreography.Network.Http
import Choreography.Network.Local
import Control.Monad.IO.Class
import Data.Proxy
runChoreography :: (Backend config, MonadIO m) => config -> Choreo m a -> LocTm -> m a
runChoreography :: forall config (m :: * -> *) a.
(Backend config, MonadIO m) =>
config -> Choreo m a -> LocTm -> m a
runChoreography config
cfg Choreo m a
choreo LocTm
l = forall c (m :: * -> *) a.
(Backend c, MonadIO m) =>
c -> LocTm -> Network m a -> m a
runNetwork config
cfg LocTm
l (forall (m :: * -> *) a. Choreo m a -> LocTm -> Network m a
epp Choreo m a
choreo LocTm
l)