{-# OPTIONS_GHC -Wno-redundant-constraints #-}
module Effectful.FileSystem.HandleReader.Static
(
HandleReader,
hIsEOF,
hGetBuffering,
hIsOpen,
hIsClosed,
hIsReadable,
hIsWritable,
hIsSeekable,
hIsTerminalDevice,
hGetEcho,
hWaitForInput,
hReady,
hGetChar,
hGetLine,
hGetContents,
hGet,
hGetSome,
hGetNonBlocking,
runHandleReader,
hGetLineUtf8,
hGetLineUtf8Lenient,
hGetLineUtf8ThrowM,
hGetContentsUtf8,
hGetContentsUtf8Lenient,
hGetContentsUtf8ThrowM,
hGetUtf8,
hGetUtf8Lenient,
hGetUtf8ThrowM,
hGetSomeUtf8,
hGetSomeUtf8Lenient,
hGetSomeUtf8ThrowM,
hGetNonBlockingUtf8,
hGetNonBlockingUtf8Lenient,
hGetNonBlockingUtf8ThrowM,
ByteString,
Handle,
OsPath,
Text,
UnicodeException,
)
where
import Control.Monad ((>=>))
import Data.ByteString (ByteString)
import Data.ByteString.Char8 qualified as C8
import Data.Text (Text)
import Data.Text.Encoding.Error (UnicodeException)
import Effectful
( Dispatch (Static),
DispatchOf,
Eff,
Effect,
IOE,
type (:>),
)
import Effectful.Dispatch.Static
( HasCallStack,
SideEffects (WithSideEffects),
StaticRep,
evalStaticRep,
unsafeEff_,
)
import FileSystem.OsPath (OsPath)
import FileSystem.UTF8 qualified as FS.UTF8
import System.IO (BufferMode, Handle)
import System.IO qualified as IO
data HandleReader :: Effect
type instance DispatchOf HandleReader = Static WithSideEffects
data instance StaticRep HandleReader = MkHandleReader
runHandleReader ::
(HasCallStack, IOE :> es) =>
Eff (HandleReader : es) a ->
Eff es a
runHandleReader :: forall (es :: [Effect]) a.
(HasCallStack, IOE :> es) =>
Eff (HandleReader : es) a -> Eff es a
runHandleReader = StaticRep HandleReader -> Eff (HandleReader : es) a -> Eff es a
forall (e :: Effect) (sideEffects :: SideEffects) (es :: [Effect])
a.
(HasCallStack, DispatchOf e ~ 'Static sideEffects,
MaybeIOE sideEffects es) =>
StaticRep e -> Eff (e : es) a -> Eff es a
evalStaticRep StaticRep HandleReader
MkHandleReader
hIsEOF :: (HandleReader :> es, HasCallStack) => Handle -> Eff es Bool
hIsEOF :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es Bool
hIsEOF = IO Bool -> Eff es Bool
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO Bool -> Eff es Bool)
-> (Handle -> IO Bool) -> Handle -> Eff es Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> IO Bool
IO.hIsEOF
hGetBuffering ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es BufferMode
hGetBuffering :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es BufferMode
hGetBuffering = IO BufferMode -> Eff es BufferMode
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO BufferMode -> Eff es BufferMode)
-> (Handle -> IO BufferMode) -> Handle -> Eff es BufferMode
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> IO BufferMode
IO.hGetBuffering
hIsOpen ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es Bool
hIsOpen :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es Bool
hIsOpen = IO Bool -> Eff es Bool
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO Bool -> Eff es Bool)
-> (Handle -> IO Bool) -> Handle -> Eff es Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> IO Bool
IO.hIsOpen
hIsClosed ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es Bool
hIsClosed :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es Bool
hIsClosed = IO Bool -> Eff es Bool
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO Bool -> Eff es Bool)
-> (Handle -> IO Bool) -> Handle -> Eff es Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> IO Bool
IO.hIsClosed
hIsReadable ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es Bool
hIsReadable :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es Bool
hIsReadable = IO Bool -> Eff es Bool
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO Bool -> Eff es Bool)
-> (Handle -> IO Bool) -> Handle -> Eff es Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> IO Bool
IO.hIsReadable
hIsWritable ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es Bool
hIsWritable :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es Bool
hIsWritable = IO Bool -> Eff es Bool
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO Bool -> Eff es Bool)
-> (Handle -> IO Bool) -> Handle -> Eff es Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> IO Bool
IO.hIsWritable
hIsSeekable ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es Bool
hIsSeekable :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es Bool
hIsSeekable = IO Bool -> Eff es Bool
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO Bool -> Eff es Bool)
-> (Handle -> IO Bool) -> Handle -> Eff es Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> IO Bool
IO.hIsSeekable
hIsTerminalDevice ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es Bool
hIsTerminalDevice :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es Bool
hIsTerminalDevice = IO Bool -> Eff es Bool
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO Bool -> Eff es Bool)
-> (Handle -> IO Bool) -> Handle -> Eff es Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> IO Bool
IO.hIsTerminalDevice
hGetEcho ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es Bool
hGetEcho :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es Bool
hGetEcho = IO Bool -> Eff es Bool
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO Bool -> Eff es Bool)
-> (Handle -> IO Bool) -> Handle -> Eff es Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> IO Bool
IO.hGetEcho
hWaitForInput ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Int ->
Eff es Bool
hWaitForInput :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es Bool
hWaitForInput Handle
h = IO Bool -> Eff es Bool
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO Bool -> Eff es Bool) -> (Int -> IO Bool) -> Int -> Eff es Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> Int -> IO Bool
IO.hWaitForInput Handle
h
hReady ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es Bool
hReady :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es Bool
hReady = IO Bool -> Eff es Bool
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO Bool -> Eff es Bool)
-> (Handle -> IO Bool) -> Handle -> Eff es Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> IO Bool
IO.hReady
hGetChar ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es Char
hGetChar :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es Char
hGetChar = IO Char -> Eff es Char
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO Char -> Eff es Char)
-> (Handle -> IO Char) -> Handle -> Eff es Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> IO Char
IO.hGetChar
hGetLine ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es ByteString
hGetLine :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es ByteString
hGetLine = IO ByteString -> Eff es ByteString
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO ByteString -> Eff es ByteString)
-> (Handle -> IO ByteString) -> Handle -> Eff es ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> IO ByteString
C8.hGetLine
hGetContents ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es ByteString
hGetContents :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es ByteString
hGetContents = IO ByteString -> Eff es ByteString
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO ByteString -> Eff es ByteString)
-> (Handle -> IO ByteString) -> Handle -> Eff es ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> IO ByteString
C8.hGetContents
hGet ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Int ->
Eff es ByteString
hGet :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es ByteString
hGet Handle
h = IO ByteString -> Eff es ByteString
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO ByteString -> Eff es ByteString)
-> (Int -> IO ByteString) -> Int -> Eff es ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> Int -> IO ByteString
C8.hGet Handle
h
hGetSome ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Int ->
Eff es ByteString
hGetSome :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es ByteString
hGetSome Handle
h = IO ByteString -> Eff es ByteString
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO ByteString -> Eff es ByteString)
-> (Int -> IO ByteString) -> Int -> Eff es ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> Int -> IO ByteString
C8.hGetSome Handle
h
hGetNonBlocking ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Int ->
Eff es ByteString
hGetNonBlocking :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es ByteString
hGetNonBlocking Handle
h = IO ByteString -> Eff es ByteString
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO ByteString -> Eff es ByteString)
-> (Int -> IO ByteString) -> Int -> Eff es ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> Int -> IO ByteString
C8.hGetNonBlocking Handle
h
hGetLineUtf8 ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es (Either UnicodeException Text)
hGetLineUtf8 :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es (Either UnicodeException Text)
hGetLineUtf8 = (ByteString -> Either UnicodeException Text)
-> Eff es ByteString -> Eff es (Either UnicodeException Text)
forall a b. (a -> b) -> Eff es a -> Eff es b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> Either UnicodeException Text
FS.UTF8.decodeUtf8 (Eff es ByteString -> Eff es (Either UnicodeException Text))
-> (Handle -> Eff es ByteString)
-> Handle
-> Eff es (Either UnicodeException Text)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> Eff es ByteString
forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es ByteString
hGetLine
hGetLineUtf8Lenient ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es Text
hGetLineUtf8Lenient :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es Text
hGetLineUtf8Lenient = (ByteString -> Text) -> Eff es ByteString -> Eff es Text
forall a b. (a -> b) -> Eff es a -> Eff es b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> Text
FS.UTF8.decodeUtf8Lenient (Eff es ByteString -> Eff es Text)
-> (Handle -> Eff es ByteString) -> Handle -> Eff es Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> Eff es ByteString
forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es ByteString
hGetLine
hGetLineUtf8ThrowM ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es Text
hGetLineUtf8ThrowM :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es Text
hGetLineUtf8ThrowM = Handle -> Eff es ByteString
forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es ByteString
hGetLine (Handle -> Eff es ByteString)
-> (ByteString -> Eff es Text) -> Handle -> Eff es Text
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> ByteString -> Eff es Text
forall (m :: * -> *).
(HasCallStack, MonadThrow m) =>
ByteString -> m Text
FS.UTF8.decodeUtf8ThrowM
hGetContentsUtf8 ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es (Either UnicodeException Text)
hGetContentsUtf8 :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es (Either UnicodeException Text)
hGetContentsUtf8 = (ByteString -> Either UnicodeException Text)
-> Eff es ByteString -> Eff es (Either UnicodeException Text)
forall a b. (a -> b) -> Eff es a -> Eff es b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> Either UnicodeException Text
FS.UTF8.decodeUtf8 (Eff es ByteString -> Eff es (Either UnicodeException Text))
-> (Handle -> Eff es ByteString)
-> Handle
-> Eff es (Either UnicodeException Text)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> Eff es ByteString
forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es ByteString
hGetContents
hGetContentsUtf8Lenient ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es Text
hGetContentsUtf8Lenient :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es Text
hGetContentsUtf8Lenient = (ByteString -> Text) -> Eff es ByteString -> Eff es Text
forall a b. (a -> b) -> Eff es a -> Eff es b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> Text
FS.UTF8.decodeUtf8Lenient (Eff es ByteString -> Eff es Text)
-> (Handle -> Eff es ByteString) -> Handle -> Eff es Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> Eff es ByteString
forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es ByteString
hGetContents
hGetContentsUtf8ThrowM ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Eff es Text
hGetContentsUtf8ThrowM :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es Text
hGetContentsUtf8ThrowM = Handle -> Eff es ByteString
forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Eff es ByteString
hGetContents (Handle -> Eff es ByteString)
-> (ByteString -> Eff es Text) -> Handle -> Eff es Text
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> ByteString -> Eff es Text
forall (m :: * -> *).
(HasCallStack, MonadThrow m) =>
ByteString -> m Text
FS.UTF8.decodeUtf8ThrowM
hGetUtf8 ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Int ->
Eff es (Either UnicodeException Text)
hGetUtf8 :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es (Either UnicodeException Text)
hGetUtf8 Handle
h = (ByteString -> Either UnicodeException Text)
-> Eff es ByteString -> Eff es (Either UnicodeException Text)
forall a b. (a -> b) -> Eff es a -> Eff es b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> Either UnicodeException Text
FS.UTF8.decodeUtf8 (Eff es ByteString -> Eff es (Either UnicodeException Text))
-> (Int -> Eff es ByteString)
-> Int
-> Eff es (Either UnicodeException Text)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> Int -> Eff es ByteString
forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es ByteString
hGet Handle
h
hGetUtf8Lenient ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Int ->
Eff es Text
hGetUtf8Lenient :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es Text
hGetUtf8Lenient Handle
h = (ByteString -> Text) -> Eff es ByteString -> Eff es Text
forall a b. (a -> b) -> Eff es a -> Eff es b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> Text
FS.UTF8.decodeUtf8Lenient (Eff es ByteString -> Eff es Text)
-> (Int -> Eff es ByteString) -> Int -> Eff es Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> Int -> Eff es ByteString
forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es ByteString
hGet Handle
h
hGetUtf8ThrowM ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Int ->
Eff es Text
hGetUtf8ThrowM :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es Text
hGetUtf8ThrowM Handle
h = Handle -> Int -> Eff es ByteString
forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es ByteString
hGet Handle
h (Int -> Eff es ByteString)
-> (ByteString -> Eff es Text) -> Int -> Eff es Text
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> ByteString -> Eff es Text
forall (m :: * -> *).
(HasCallStack, MonadThrow m) =>
ByteString -> m Text
FS.UTF8.decodeUtf8ThrowM
hGetSomeUtf8 ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Int ->
Eff es (Either UnicodeException Text)
hGetSomeUtf8 :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es (Either UnicodeException Text)
hGetSomeUtf8 Handle
h = (ByteString -> Either UnicodeException Text)
-> Eff es ByteString -> Eff es (Either UnicodeException Text)
forall a b. (a -> b) -> Eff es a -> Eff es b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> Either UnicodeException Text
FS.UTF8.decodeUtf8 (Eff es ByteString -> Eff es (Either UnicodeException Text))
-> (Int -> Eff es ByteString)
-> Int
-> Eff es (Either UnicodeException Text)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> Int -> Eff es ByteString
forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es ByteString
hGetSome Handle
h
hGetSomeUtf8Lenient ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Int ->
Eff es Text
hGetSomeUtf8Lenient :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es Text
hGetSomeUtf8Lenient Handle
h = (ByteString -> Text) -> Eff es ByteString -> Eff es Text
forall a b. (a -> b) -> Eff es a -> Eff es b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> Text
FS.UTF8.decodeUtf8Lenient (Eff es ByteString -> Eff es Text)
-> (Int -> Eff es ByteString) -> Int -> Eff es Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> Int -> Eff es ByteString
forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es ByteString
hGetSome Handle
h
hGetSomeUtf8ThrowM ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Int ->
Eff es Text
hGetSomeUtf8ThrowM :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es Text
hGetSomeUtf8ThrowM Handle
h = Handle -> Int -> Eff es ByteString
forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es ByteString
hGetSome Handle
h (Int -> Eff es ByteString)
-> (ByteString -> Eff es Text) -> Int -> Eff es Text
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> ByteString -> Eff es Text
forall (m :: * -> *).
(HasCallStack, MonadThrow m) =>
ByteString -> m Text
FS.UTF8.decodeUtf8ThrowM
hGetNonBlockingUtf8 ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Int ->
Eff es (Either UnicodeException Text)
hGetNonBlockingUtf8 :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es (Either UnicodeException Text)
hGetNonBlockingUtf8 Handle
h = (ByteString -> Either UnicodeException Text)
-> Eff es ByteString -> Eff es (Either UnicodeException Text)
forall a b. (a -> b) -> Eff es a -> Eff es b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> Either UnicodeException Text
FS.UTF8.decodeUtf8 (Eff es ByteString -> Eff es (Either UnicodeException Text))
-> (Int -> Eff es ByteString)
-> Int
-> Eff es (Either UnicodeException Text)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> Int -> Eff es ByteString
forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es ByteString
hGetNonBlocking Handle
h
hGetNonBlockingUtf8Lenient ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Int ->
Eff es Text
hGetNonBlockingUtf8Lenient :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es Text
hGetNonBlockingUtf8Lenient Handle
h = (ByteString -> Text) -> Eff es ByteString -> Eff es Text
forall a b. (a -> b) -> Eff es a -> Eff es b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> Text
FS.UTF8.decodeUtf8Lenient (Eff es ByteString -> Eff es Text)
-> (Int -> Eff es ByteString) -> Int -> Eff es Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> Int -> Eff es ByteString
forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es ByteString
hGetNonBlocking Handle
h
hGetNonBlockingUtf8ThrowM ::
( HandleReader :> es,
HasCallStack
) =>
Handle ->
Int ->
Eff es Text
hGetNonBlockingUtf8ThrowM :: forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es Text
hGetNonBlockingUtf8ThrowM Handle
h = Handle -> Int -> Eff es ByteString
forall (es :: [Effect]).
(HandleReader :> es, HasCallStack) =>
Handle -> Int -> Eff es ByteString
hGetNonBlocking Handle
h (Int -> Eff es ByteString)
-> (ByteString -> Eff es Text) -> Int -> Eff es Text
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> ByteString -> Eff es Text
forall (m :: * -> *).
(HasCallStack, MonadThrow m) =>
ByteString -> m Text
FS.UTF8.decodeUtf8ThrowM