{-# LANGUAGE NoImplicitPrelude #-} module Nest.Prelude ( module X , fromMaybeM , whenM , unlessM , with ) where import Control.Applicative as X import Control.Monad as X import Data.Bool as X (Bool (..), (||), (&&), not, bool, otherwise) import Data.Char as X (Char) import Data.Bifunctor as X (Bifunctor (..)) import Data.Either as X (Either (..), either) import Data.Foldable as X import Data.Function as X ((.), ($), (&), flip, id, const) import Data.Functor as X (($>)) import Data.Int as X import Data.Maybe as X (Maybe (..), maybe, fromMaybe) import Data.Monoid as X (Monoid (..), (<>)) import Data.Traversable as X import Prelude as X (Eq (..), Show (..), Ord (..), Num (..), Enum, Bounded (..), Integral (..), Double, error, seq, fromIntegral, (/), (^), fst, snd) import Text.Read as X (Read (..), readMaybe) import Nest.EitherT as X fromMaybeM :: Applicative f => f a -> Maybe a -> f a fromMaybeM = flip maybe pure whenM :: Monad m => m Bool -> m () -> m () whenM p m = p >>= flip when m unlessM :: Monad m => m Bool -> m () -> m () unlessM p m = p >>= flip unless m with :: Functor f => f a -> (a -> b) -> f b with = flip fmap