liblawless-0.19.2: Prelude based on protolude for GHC 8 and beyond.

Copyright© 2016 All rights reserved.
LicenseGPL-3
MaintainerEvan Cofsky <evan@theunixman.com>
Stabilityexperimental
PortabilityPOSIX
Safe HaskellNone
LanguageHaskell2010

IO

Description

 

Synopsis

Documentation

putStr :: (MonadIO m, Printable p) => p -> m () Source #

putStrLn :: (MonadIO m, Printable p) => p -> m () Source #

managed :: (forall r. (a -> IO r) -> IO r) -> Managed a #

data Managed a :: * -> * #

Instances

Monad Managed 

Methods

(>>=) :: Managed a -> (a -> Managed b) -> Managed b #

(>>) :: Managed a -> Managed b -> Managed b #

return :: a -> Managed a #

fail :: String -> Managed a #

Functor Managed 

Methods

fmap :: (a -> b) -> Managed a -> Managed b #

(<$) :: a -> Managed b -> Managed a #

Applicative Managed 

Methods

pure :: a -> Managed a #

(<*>) :: Managed (a -> b) -> Managed a -> Managed b #

(*>) :: Managed a -> Managed b -> Managed b #

(<*) :: Managed a -> Managed b -> Managed a #

MonadIO Managed 

Methods

liftIO :: IO a -> Managed a #

MonadManaged Managed 

Methods

using :: Managed a -> Managed a #

Floating a => Floating (Managed a) 

Methods

pi :: Managed a #

exp :: Managed a -> Managed a #

log :: Managed a -> Managed a #

sqrt :: Managed a -> Managed a #

(**) :: Managed a -> Managed a -> Managed a #

logBase :: Managed a -> Managed a -> Managed a #

sin :: Managed a -> Managed a #

cos :: Managed a -> Managed a #

tan :: Managed a -> Managed a #

asin :: Managed a -> Managed a #

acos :: Managed a -> Managed a #

atan :: Managed a -> Managed a #

sinh :: Managed a -> Managed a #

cosh :: Managed a -> Managed a #

tanh :: Managed a -> Managed a #

asinh :: Managed a -> Managed a #

acosh :: Managed a -> Managed a #

atanh :: Managed a -> Managed a #

log1p :: Managed a -> Managed a #

expm1 :: Managed a -> Managed a #

log1pexp :: Managed a -> Managed a #

log1mexp :: Managed a -> Managed a #

Fractional a => Fractional (Managed a) 

Methods

(/) :: Managed a -> Managed a -> Managed a #

recip :: Managed a -> Managed a #

fromRational :: Rational -> Managed a #

Num a => Num (Managed a) 

Methods

(+) :: Managed a -> Managed a -> Managed a #

(-) :: Managed a -> Managed a -> Managed a #

(*) :: Managed a -> Managed a -> Managed a #

negate :: Managed a -> Managed a #

abs :: Managed a -> Managed a #

signum :: Managed a -> Managed a #

fromInteger :: Integer -> Managed a #

Monoid a => Monoid (Managed a) 

Methods

mempty :: Managed a #

mappend :: Managed a -> Managed a -> Managed a #

mconcat :: [Managed a] -> Managed a #

class MonadIO m => MonadManaged m where #

Minimal complete definition

using

Methods

using :: Managed a -> m a #

Instances

MonadManaged Managed 

Methods

using :: Managed a -> Managed a #

MonadManaged m => MonadManaged (MaybeT m) 

Methods

using :: Managed a -> MaybeT m a #

(Monoid w, MonadManaged m) => MonadManaged (WriterT w m) 

Methods

using :: Managed a -> WriterT w m a #

(Monoid w, MonadManaged m) => MonadManaged (WriterT w m) 

Methods

using :: Managed a -> WriterT w m a #

MonadManaged m => MonadManaged (StateT s m) 

Methods

using :: Managed a -> StateT s m a #

MonadManaged m => MonadManaged (StateT s m) 

Methods

using :: Managed a -> StateT s m a #

MonadManaged m => MonadManaged (IdentityT * m) 

Methods

using :: Managed a -> IdentityT * m a #

MonadManaged m => MonadManaged (ExceptT e m) 

Methods

using :: Managed a -> ExceptT e m a #

MonadManaged m => MonadManaged (ReaderT * r m) 

Methods

using :: Managed a -> ReaderT * r m a #

MonadManaged m => MonadManaged (ContT * r m) 

Methods

using :: Managed a -> ContT * r m a #

(Monoid w, MonadManaged m) => MonadManaged (RWST r w s m) 

Methods

using :: Managed a -> RWST r w s m a #

(Monoid w, MonadManaged m) => MonadManaged (RWST r w s m) 

Methods

using :: Managed a -> RWST r w s m a #

runManaged :: Managed () -> IO () #

class Monad m => MonadIO m where #

Monads in which IO computations may be embedded. Any monad built by applying a sequence of monad transformers to the IO monad will be an instance of this class.

Instances should satisfy the following laws, which state that liftIO is a transformer of monads:

Minimal complete definition

liftIO

Methods

liftIO :: IO a -> m a #

Lift a computation from the IO monad.

Instances

MonadIO IO 

Methods

liftIO :: IO a -> IO a #

MonadIO Managed 

Methods

liftIO :: IO a -> Managed a #

MonadIO m => MonadIO (MaybeT m) 

Methods

liftIO :: IO a -> MaybeT m a #

MonadIO m => MonadIO (ListT m) 

Methods

liftIO :: IO a -> ListT m a #

MonadIO m => MonadIO (ResourceT m) 

Methods

liftIO :: IO a -> ResourceT m a #

(Monoid w, MonadIO m) => MonadIO (WriterT w m) 

Methods

liftIO :: IO a -> WriterT w m a #

(Monoid w, MonadIO m) => MonadIO (WriterT w m) 

Methods

liftIO :: IO a -> WriterT w m a #

MonadIO m => MonadIO (StateT s m) 

Methods

liftIO :: IO a -> StateT s m a #

MonadIO m => MonadIO (StateT s m) 

Methods

liftIO :: IO a -> StateT s m a #

MonadIO m => MonadIO (IdentityT * m) 

Methods

liftIO :: IO a -> IdentityT * m a #

MonadIO m => MonadIO (ExceptT e m) 

Methods

liftIO :: IO a -> ExceptT e m a #

(Error e, MonadIO m) => MonadIO (ErrorT e m) 

Methods

liftIO :: IO a -> ErrorT e m a #

(Functor f, MonadIO m) => MonadIO (FreeT f m) 

Methods

liftIO :: IO a -> FreeT f m a #

MonadIO m => MonadIO (ReaderT * r m) 

Methods

liftIO :: IO a -> ReaderT * r m a #

MonadIO m => MonadIO (ContT * r m) 

Methods

liftIO :: IO a -> ContT * r m a #

MonadIO m => MonadIO (PlanT k o m) 

Methods

liftIO :: IO a -> PlanT k o m a #

(Monoid w, MonadIO m) => MonadIO (RWST r w s m) 

Methods

liftIO :: IO a -> RWST r w s m a #

(Monoid w, MonadIO m) => MonadIO (RWST r w s m) 

Methods

liftIO :: IO a -> RWST r w s m a #

liftIO :: MonadIO m => forall a. IO a -> m a #

Lift a computation from the IO monad.

hSeek :: Handle -> SeekMode -> Integer -> IO () #

Computation hSeek hdl mode i sets the position of handle hdl depending on mode. The offset i is given in terms of 8-bit bytes.

If hdl is block- or line-buffered, then seeking to a position which is not in the current buffer will first cause any items in the output buffer to be written to the device, and then cause the input buffer to be discarded. Some handles may not be seekable (see hIsSeekable), or only support a subset of the possible positioning operations (for instance, it may only be possible to seek to the end of a tape, or to a positive offset from the beginning or current position). It is not possible to set a negative I/O position, or for a physical file, an I/O position beyond the current end-of-file.

This operation may fail with:

  • isIllegalOperationError if the Handle is not seekable, or does not support the requested seek mode.
  • isPermissionError if a system resource limit would be exceeded.

data SeekMode :: * #

A mode that determines the effect of hSeek hdl mode i.

Constructors

AbsoluteSeek

the position of hdl is set to i.

RelativeSeek

the position of hdl is set to offset i from the current position.

SeekFromEnd

the position of hdl is set to offset i from the end of the file.

file :: AbsRel ar => File ar -> IOMode -> Managed Handle Source #

Binary files, no buffering.

tfile :: AbsRel ar => File ar -> IOMode -> Managed Handle Source #

Text files, line-buffered.

textMode :: MonadIO m => Handle -> m () Source #

binaryMode :: MonadIO m => Handle -> m () Source #

hClose :: MonadIO m => Handle -> m () Source #

doesFileExist :: (MonadIO m, AbsRel ar) => File ar -> m Bool Source #

removeFile :: (MonadIO m, AbsRel ar) => File ar -> m () Source #

data Handle :: * #

Haskell defines operations to read and write characters from and to files, represented by values of type Handle. Each value of this type is a handle: a record used by the Haskell run-time system to manage I/O with file system objects. A handle has at least the following properties:

  • whether it manages input or output or both;
  • whether it is open, closed or semi-closed;
  • whether the object is seekable;
  • whether buffering is disabled, or enabled on a line or block basis;
  • a buffer (whose length may be zero).

Most handles will also have a current I/O position indicating where the next input or output operation will occur. A handle is readable if it manages only input or both input and output; likewise, it is writable if it manages only output or both input and output. A handle is open when first allocated. Once it is closed it can no longer be used for either input or output, though an implementation cannot re-use its storage while references remain to it. Handles are in the Show and Eq classes. The string produced by showing a handle is system dependent; it should include enough information to identify the handle for debugging. A handle is equal according to == only to itself; no attempt is made to compare the internal state of different handles for equality.

Instances

Eq Handle 

Methods

(==) :: Handle -> Handle -> Bool #

(/=) :: Handle -> Handle -> Bool #

Show Handle