{-# LANGUAGE UnicodeSyntax #-} module Prelude (for, io, headFail, headThrow, module Relude, module Relude.Extra.Map) where import Control.Exception.Safe import Relude hiding (Handle, appendFile, force, readFile, stdout, writeFile) import Relude.Extra.Map (lookup) io ∷ MonadIO m ⇒ IO a → m a io :: forall (m :: * -> *) a. MonadIO m => IO a -> m a io = IO a -> m a forall a. IO a -> m a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO for ∷ [a] → (a → b) → [b] for :: forall a b. [a] -> (a -> b) -> [b] for = ((a -> b) -> [a] -> [b]) -> [a] -> (a -> b) -> [b] forall a b c. (a -> b -> c) -> b -> a -> c flip (a -> b) -> [a] -> [b] forall a b. (a -> b) -> [a] -> [b] map headThrow ∷ MonadThrow m ⇒ Exception e ⇒ e → [a] → m a headThrow :: forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> [a] -> m a headThrow e _ (a a : [a] _) = a -> m a forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return a a headThrow e e [a] _ = e -> m a forall (m :: * -> *) e a. (HasCallStack, MonadThrow m, Exception e) => e -> m a throwM e e headFail ∷ MonadFail m ⇒ String → [a] → m a headFail :: forall (m :: * -> *) a. MonadFail m => String -> [a] -> m a headFail String _ (a a : [a] _) = a -> m a forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return a a headFail String e [a] _ = String -> m a forall a. String -> m a forall (m :: * -> *) a. MonadFail m => String -> m a fail String e