module Effectful.FileSystem.Handle
(
Handle,
unHandle,
unsafeHandle,
HandleMode (..),
stdin,
stdout,
stderr,
CanRead,
CanWrite,
HandleIO,
HandleM,
HandleR,
HandleW,
HandleRW,
LockedHandle,
Internal.unLockedHandle,
unsafeLockedHandle,
Internal.liftLocked,
LockedHandleR,
LockedHandleW,
LockedHandleRW,
)
where
import Effectful.FileSystem.Handle.Internal
( CanRead,
CanWrite,
Handle (MkHandle),
HandleMode (HandleModeRead, HandleModeReadWrite, HandleModeWrite),
LockedHandle (MkLockedHandle),
unHandle,
)
import Effectful.FileSystem.Handle.Internal qualified as Internal
import System.IO qualified as IO
type HandleIO = IO.Handle
type HandleM p = Handle p
type HandleR = Handle HandleModeRead
type HandleW = Handle HandleModeWrite
type HandleRW = Handle HandleModeReadWrite
unsafeHandle :: IO.Handle -> Handle p
unsafeHandle :: forall (p :: HandleMode). Handle -> Handle p
unsafeHandle = Handle -> Handle p
forall (p :: HandleMode). Handle -> Handle p
MkHandle
unsafeLockedHandle :: Handle p -> LockedHandle p
unsafeLockedHandle :: forall (p :: HandleMode). Handle p -> LockedHandle p
unsafeLockedHandle = Handle p -> LockedHandle p
forall (p :: HandleMode). Handle p -> LockedHandle p
MkLockedHandle
stdin :: Handle HandleModeReadWrite
stdin :: Handle 'HandleModeReadWrite
stdin = Handle -> Handle 'HandleModeReadWrite
forall (p :: HandleMode). Handle -> Handle p
MkHandle Handle
IO.stdin
stdout :: Handle HandleModeReadWrite
stdout :: Handle 'HandleModeReadWrite
stdout = Handle -> Handle 'HandleModeReadWrite
forall (p :: HandleMode). Handle -> Handle p
MkHandle Handle
IO.stdout
stderr :: Handle HandleModeReadWrite
stderr :: Handle 'HandleModeReadWrite
stderr = Handle -> Handle 'HandleModeReadWrite
forall (p :: HandleMode). Handle -> Handle p
MkHandle Handle
IO.stderr
type LockedHandleR = LockedHandle HandleModeRead
type LockedHandleW = LockedHandle HandleModeWrite
type LockedHandleRW = LockedHandle HandleModeReadWrite