fs-effectful
Safe HaskellNone
LanguageGHC2021

Effectful.FileSystem.Handle

Description

Typed file handles.

Since: 0.1

Synopsis

Typed handle

data Handle (p :: HandleMode) Source #

Wrapper for file handles that includes an index for the mode.

Since: 0.1

Instances

Instances details
HasField "unHandle" (Handle p :: Type) Handle Source #

Since: 0.1

Instance details

Defined in Effectful.FileSystem.Handle.Internal

Methods

getField :: Handle p -> Handle #

HasField "unLockedHandle" (LockedHandle p :: Type) (Handle p :: Type) Source #

Since: 0.1

Instance details

Defined in Effectful.FileSystem.Handle.Internal

Methods

getField :: LockedHandle p -> Handle p #

(k ~ A_Getter, a ~ Handle, b ~ Handle) => LabelOptic "unHandle" k (Handle p) (Handle p) a b Source #

Since: 0.1

Instance details

Defined in Effectful.FileSystem.Handle.Internal

Methods

labelOptic :: Optic k NoIx (Handle p) (Handle p) a b Source #

unHandle :: forall (p :: HandleMode). Handle p -> Handle Source #

Since: 0.1

unsafeHandle :: forall (p :: HandleMode). Handle -> Handle p Source #

Makes a handle with any permissions. Useful for pseudo handles.

Since: 0.1

data HandleMode Source #

Possible handle modes.

Since: 0.1

Constructors

HandleModeRead

Since: 0.1

HandleModeWrite

Since: 0.1

HandleModeReadWrite

Since: 0.1

IO handles

Type families

type family CanRead (hm :: HandleMode) where ... Source #

Since: 0.1

Equations

CanRead 'HandleModeRead = () 
CanRead 'HandleModeWrite = Unsatisfiable ('Text "HandleModeWrite does not have Read permission.") 
CanRead 'HandleModeReadWrite = () 

type family CanWrite (hm :: HandleMode) where ... Source #

Since: 0.1

Equations

CanWrite 'HandleModeRead = Unsatisfiable ('Text "HandleModeRead does not have Write permission.") 
CanWrite 'HandleModeWrite = () 
CanWrite 'HandleModeReadWrite = () 

Aliases

type HandleIO = Handle Source #

Alias for base's System.IO.Handle.

Since: 0.1

type HandleM (p :: HandleMode) = Handle p Source #

Alias for typed Handle.

Since: 0.1

type HandleR = Handle 'HandleModeRead Source #

Readable handle.

Since: 0.1

type HandleW = Handle 'HandleModeWrite Source #

Writable handle.

Since: 0.1

type HandleRW = Handle 'HandleModeReadWrite Source #

Readable and writable handle.

Since: 0.1

Locks

data LockedHandle (p :: HandleMode) Source #

File handle with lock.

Since: 0.1

Instances

Instances details
HasField "unLockedHandle" (LockedHandle p :: Type) (Handle p :: Type) Source #

Since: 0.1

Instance details

Defined in Effectful.FileSystem.Handle.Internal

Methods

getField :: LockedHandle p -> Handle p #

(k ~ A_Getter, a ~ Handle p, b ~ Handle p) => LabelOptic "unLockedHandle" k (LockedHandle p) (LockedHandle p) a b Source #

Since: 0.1

Instance details

Defined in Effectful.FileSystem.Handle.Internal

unLockedHandle :: forall (p :: HandleMode). LockedHandle p -> Handle p Source #

Since: 0.1

unsafeLockedHandle :: forall (p :: HandleMode). Handle p -> LockedHandle p Source #

Makes a LockedHandle without performing any locking.

Since: 0.1

liftLocked :: forall (p :: HandleMode) a. HasCallStack => (HasCallStack => Handle p -> a) -> LockedHandle p -> a Source #

Lifts a function on handle to one on locked handles.

Since: 0.1

Aliases

type LockedHandleR = LockedHandle 'HandleModeRead Source #

Readable handle.

Since: 0.1

type LockedHandleW = LockedHandle 'HandleModeWrite Source #

Writable handle.

Since: 0.1

type LockedHandleRW = LockedHandle 'HandleModeReadWrite Source #

Readable and writable handle.

Since: 0.1