{-| Recommended entry import for this library Read "Control.Proxy.Tutorial" for an extended tutorial. -} module Control.Proxy ( -- * Modules -- $default module Control.Proxy.Core, module Control.Proxy.Core.Fast ) where import Control.Proxy.Core import Control.Proxy.Core.Fast hiding (Request, Respond, M, Pure) {- $default "Control.Proxy.Core" exports everything except 'runProxy'. This library provides two base proxy implementations, each of which export their own 'runProxy' function: * "Control.Proxy.Core.Fast": This runs faster for code that is not 'IO'-bound, but requires implementation hiding to enforce the monad transformer laws. * "Control.Proxy.Core.Correct": This trades speed on pure code segments, but strictly preserves the monad transformer laws. This module selects the currently recommended implementation (Fast). You can switch to the correct implementation by importing "Control.Proxy.Core" and "Control.Proxy.Core.Correct". You can lock in the fast implementation (in case I change the recommended default) by importing "Control.Proxy.Core" and "Control.Proxy.Core.Fast". -}