{-| The primary Free Monad wrapping HTTP actions. -} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE TypeFamilies #-} module Network.HTTP.Client.Free.Types ( -- * Type Familes RequestType , ResponseType -- * The base functor of our library , HttpF(HttpF) -- * Type aliases , FreeHttp ) where import Control.Monad.Trans.Free.Church (FT) import Network.HTTP.Types.Method (StdMethod) -- | type family to represent the request type foundation type family RequestType client :: * -- | type family to represent the response type foundation type family ResponseType client :: * -- | Our functor from which the free-http free monad is generated from. data HttpF client a = HttpF StdMethod (RequestType client) (ResponseType client -> a) deriving Functor -- | a type alias for the free monad generated by 'HttpF' type FreeHttp client m a = FT (HttpF client) m a