{-# LANGUAGE OverloadedStrings #-} -- | module Helper where import Control.Lens import Prelude hiding ((-), log) import Control.Concurrent.MVar (withMVar) import Control.Monad (forever, when) import Control.Monad.IO.Class (MonadIO(..)) import Data.ByteString (ByteString) import qualified Data.ByteString as B import Data.Monoid ((<>)) import Data.Text (Text) import qualified Data.Text.IO as T import Data.Text.Strict.Lens import Pipes (Pipe, for, cat, yield) import Pipes.Safe (catchP) import Unsafe (logLock) {-# INLINE (-) #-} infixr 0 - (-) :: (a -> b) -> a -> b f - x = f x sync :: MonadIO m => IO a -> m a sync io = liftIO - withMVar logLock - const io log :: MonadIO m => Text -> m () log x = sync - T.putStrLn x