| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Effectful.FileSystem.Handle
Description
Typed file handles.
Since: 0.1
Synopsis
- data Handle (p :: HandleMode)
- unHandle :: forall (p :: HandleMode). Handle p -> Handle
- unsafeHandle :: forall (p :: HandleMode). Handle -> Handle p
- data HandleMode
- stdin :: Handle 'HandleModeReadWrite
- stdout :: Handle 'HandleModeReadWrite
- stderr :: Handle 'HandleModeReadWrite
- type family CanRead (hm :: HandleMode) where ...
- type family CanWrite (hm :: HandleMode) where ...
- type HandleIO = Handle
- type HandleM (p :: HandleMode) = Handle p
- type HandleR = Handle 'HandleModeRead
- type HandleW = Handle 'HandleModeWrite
- type HandleRW = Handle 'HandleModeReadWrite
- data LockedHandle (p :: HandleMode)
- unLockedHandle :: forall (p :: HandleMode). LockedHandle p -> Handle p
- unsafeLockedHandle :: forall (p :: HandleMode). Handle p -> LockedHandle p
- liftLocked :: forall (p :: HandleMode) a. HasCallStack => (HasCallStack => Handle p -> a) -> LockedHandle p -> a
- type LockedHandleR = LockedHandle 'HandleModeRead
- type LockedHandleW = LockedHandle 'HandleModeWrite
- type LockedHandleRW = LockedHandle 'HandleModeReadWrite
Typed handle
data Handle (p :: HandleMode) Source #
Wrapper for file handles that includes an index for the mode.
Since: 0.1
Instances
| HasField "unHandle" (Handle p :: Type) Handle Source # | Since: 0.1 |
Defined in Effectful.FileSystem.Handle.Internal | |
| HasField "unLockedHandle" (LockedHandle p :: Type) (Handle p :: Type) Source # | Since: 0.1 |
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 |
Defined in Effectful.FileSystem.Handle.Internal | |
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
stdin :: Handle 'HandleModeReadWrite Source #
Since: 0.1
stdout :: Handle 'HandleModeReadWrite Source #
Since: 0.1
stderr :: Handle 'HandleModeReadWrite Source #
Since: 0.1
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 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
| HasField "unLockedHandle" (LockedHandle p :: Type) (Handle p :: Type) Source # | Since: 0.1 |
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 |
Defined in Effectful.FileSystem.Handle.Internal Methods labelOptic :: Optic k NoIx (LockedHandle p) (LockedHandle p) a b Source # | |
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