imm-2.1.2.0: src/lib/Prelude.hs
{-# 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 = liftIO
for ∷ [a] → (a → b) → [b]
for = flip map
headThrow ∷ MonadThrow m ⇒ Exception e ⇒ e → [a] → m a
headThrow _ (a : _) = return a
headThrow e _ = throwM e
headFail ∷ MonadFail m ⇒ String → [a] → m a
headFail _ (a : _) = return a
headFail e _ = fail e