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