Copyright | (c) Hisaket VioletRed 2022 |
---|---|
License | AGPL-3.0-or-later |
Maintainer | hisaket@outlook.jp |
Stability | experimental |
Portability | POSIX |
Safe Haskell | None |
Language | Haskell2010 |
Synopsis
- type Access format accessMode es r b = forall a. (forall handle. Sem (ScopedFile (Mode format accessMode) es b handle ': r) a) -> Sem r a
- data AccessMode
- data Format
- data Mode (fmt :: Format) (acc :: AccessMode)
- scopedFile :: forall accessMode format es b r handle a. (Member (ScopedFile (Mode format accessMode) es b handle) r, KnownList es) => Path b File -> Sem (Append es (Bundle es ': (Input (Path b File) ': r))) a -> Sem r a
- scopedFile_single :: forall accessMode format e es b r handle. (Member (ScopedFile (Mode format accessMode) es b handle) r, Member e es) => Path b File -> InterpretersFor '[e, Input (Path b File)] r
- scopedFile_bundle :: forall accessMode format es b r handle. Member (ScopedFile (Mode format accessMode) es b handle) r => Path b File -> InterpretersFor '[Bundle es, Input (Path b File)] r
- rewriteScopedFile :: (Sem (ScopedP (Path b File) handle (Bundle es) ': r) a -> Sem (ScopedP (Path b' File) handle' (Bundle es') ': r) a) -> Sem (ScopedFile mode es b handle ': r) a -> Sem (ScopedFile mode es' b' handle' ': r) a
- transformerToRewriter :: (Sem (e0 ': (e1 ': r)) a -> Sem (e1 ': r) a) -> Sem (e0 ': r) a -> Sem (e1 ': r) a
- rewriterToTransformer :: (forall r. Sem (e0 ': r) a -> Sem (e1 ': r) a) -> forall r. Member e1 r' => Sem (e0 ': r') a -> Sem r' a
- data ScopedFile mode es b handle m a
- sendBundle_ :: forall es r a. KnownList es => Sem (Append es (Bundle es ': r)) a -> Sem (Bundle es ': r) a
- runScopedFile :: KnownList es => (forall x. Path b File -> (handle -> Sem r x) -> Sem r x) -> (handle -> InterpretersFor es r) -> (forall handle'. Sem (ScopedFile mode es b handle' ': r) a) -> Sem r a
Documentation
type Access format accessMode es r b = forall a. (forall handle. Sem (ScopedFile (Mode format accessMode) es b handle ': r) a) -> Sem r a Source #
A type signature of interpreters for scoped file access.
data AccessMode Source #
ReadAccess | read only access mode ( |
WriteAccess | write only access mode ( |
AppendAccess | append access mode ( |
RwAccess | read write access mode ( |
data Mode (fmt :: Format) (acc :: AccessMode) Source #
A tag type that represents file open mode in POSIX.
scopedFile :: forall accessMode format es b r handle a. (Member (ScopedFile (Mode format accessMode) es b handle) r, KnownList es) => Path b File -> Sem (Append es (Bundle es ': (Input (Path b File) ': r))) a -> Sem r a Source #
scopedFile_single :: forall accessMode format e es b r handle. (Member (ScopedFile (Mode format accessMode) es b handle) r, Member e es) => Path b File -> InterpretersFor '[e, Input (Path b File)] r Source #
scopedFile_bundle :: forall accessMode format es b r handle. Member (ScopedFile (Mode format accessMode) es b handle) r => Path b File -> InterpretersFor '[Bundle es, Input (Path b File)] r Source #
rewriteScopedFile :: (Sem (ScopedP (Path b File) handle (Bundle es) ': r) a -> Sem (ScopedP (Path b' File) handle' (Bundle es') ': r) a) -> Sem (ScopedFile mode es b handle ': r) a -> Sem (ScopedFile mode es' b' handle' ': r) a Source #
transformerToRewriter :: (Sem (e0 ': (e1 ': r)) a -> Sem (e1 ': r) a) -> Sem (e0 ': r) a -> Sem (e1 ': r) a Source #
rewriterToTransformer :: (forall r. Sem (e0 ': r) a -> Sem (e1 ': r) a) -> forall r. Member e1 r' => Sem (e0 ': r') a -> Sem r' a Source #
data ScopedFile mode es b handle m a Source #
sendBundle_ :: forall es r a. KnownList es => Sem (Append es (Bundle es ': r)) a -> Sem (Bundle es ': r) a Source #
runScopedFile :: KnownList es => (forall x. Path b File -> (handle -> Sem r x) -> Sem r x) -> (handle -> InterpretersFor es r) -> (forall handle'. Sem (ScopedFile mode es b handle' ': r) a) -> Sem r a Source #