packages feed

imm-2.1.0.0: src/write-file/Prelude.hs

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