relude-0.7.0.0: Safe, performant, user-friendly and lightweight Haskell Standard Library
Copyright(c) 2016 Stephen Diehl
(c) 2016-2018 Serokell
(c) 2018-2020 Kowainik
LicenseMIT
MaintainerKowainik <xrom.xkov@gmail.com>
StabilityStable
PortabilityPortable
Safe HaskellSafe
LanguageHaskell2010

Relude.Lifted

Description

Lifted versions of base functions.

These functions are lifted in a sense that you can use them inside various monad transformers without adding liftIO calls explicitly. However, you still can use all these functions inside plain IO monad as usual.

Example

base

With the base function, you can easily work with these functions in the IO monad:

main :: IO ()
main = do
    x <- getLine
    print x

However, to work in MonadIO you already need to "lift" them:

main :: MonadIO m => m ()
main = do
    x <- liftIO getLine
    liftIO (print x)

relude

In the meantime, relude provides these function that can work in IO the same way:

main :: IO ()
main = do
    x <- getLine
    print x

But also allows you to work in the MonadIO monads more easily:

main :: MonadIO m => m ()
main = do
    x <- getLine
    print x
Synopsis

Documentation

Lifted MVar and STM functions.

Lifted reexports from Data.IORef module.

Lifted versions of functions that work with exit processes.

Lifted versions of functions working with files and common IO.

Lifted functions to work with stdin and stdout.