module Termonad.Prelude
  ( module X
  , hPutStrLn
  , whenJust
  ) where

import Control.Lens as X ((&))
import Control.Monad.Trans.Maybe as X (MaybeT(MaybeT), runMaybeT)
import ClassyPrelude as X
import Data.Proxy as X
import qualified Data.Text.IO as TextIO

whenJust :: Monoid m => Maybe a -> (a -> m) -> m
whenJust :: forall m a. Monoid m => Maybe a -> (a -> m) -> m
whenJust = ((a -> m) -> Maybe a -> m) -> Maybe a -> (a -> m) -> m
forall a b c. (a -> b -> c) -> b -> a -> c
flip (a -> m) -> Maybe a -> m
forall mono m.
(MonoFoldable mono, Monoid m) =>
(Element mono -> m) -> mono -> m
foldMap

hPutStrLn :: MonadIO m => Handle -> Text -> m ()
hPutStrLn :: forall (m :: * -> *). MonadIO m => Handle -> Text -> m ()
hPutStrLn Handle
hndl = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> (Text -> IO ()) -> Text -> m ()
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Handle -> Text -> IO ()
TextIO.hPutStrLn Handle
hndl