Copyright | (c) Hisaket VioletRed 2022 |
---|---|
License | AGPL-3.0-or-later |
Maintainer | hisaket@outlook.jp |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
Unscoped file access and interop with polysemy-fs package.
Synopsis
- readFile :: (Member (ScopedFile (Mode fmt ReadAccess) es b handle) r, Member (Read ToEnd i) es) => Path b File -> Sem r i
- overwriteFile :: (Member (ScopedFile (Mode fmt WriteAccess) es b handle) r, Member (Overwrite o) es) => Path b File -> o -> Sem r ()
- extendFile :: (Member (ScopedFile (Mode fmt WriteAccess) es b handle) r, Member (Extend o) es) => Path b File -> o -> Sem r ()
- appendFile :: (Member (ScopedFile (Mode fmt AppendAccess) es b handle) r, Member (Append o) es) => Path b File -> o -> Sem r ()
- readFile_single :: Member (ScopedFile (Mode fmt ReadAccess) '[Read ToEnd i] b handle) r => Path b File -> Sem r i
- overwriteFile_single :: Member (ScopedFile (Mode fmt WriteAccess) '[Overwrite o] b handle) r => Path b File -> o -> Sem r ()
- extendFile_single :: Member (ScopedFile (Mode fmt WriteAccess) '[Extend o] b handle) r => Path b File -> o -> Sem r ()
- appendFile_single :: Member (ScopedFile (Mode fmt AppendAccess) '[Append o] b handle) r => Path b File -> o -> Sem r ()
- fsReadToScopedRead :: forall handle0 handle1 handle2 handle3 r a. Members '[ScopedFile (Mode BytesFormat ReadAccess) '[ReadToEnd] Abs handle0, ScopedFile (Mode BytesFormat ReadAccess) '[ReadToEnd] Rel handle1, ScopedFile (Mode TextFormat ReadAccess) '[ReadToEnd] Abs handle2, ScopedFile (Mode TextFormat ReadAccess) '[ReadToEnd] Rel handle3, Error PathException] r => Sem (FSRead ': r) a -> Sem r a
- fsWriteToScopedWrite :: forall handle0 handle1 handle2 handle3 r a. Members '[ScopedFile (Mode BytesFormat WriteAccess) '[Overwrite] Abs handle0, ScopedFile (Mode BytesFormat WriteAccess) '[Overwrite] Rel handle1, ScopedFile (Mode TextFormat WriteAccess) '[Extend] Abs handle2, ScopedFile (Mode TextFormat WriteAccess) '[Extend] Rel handle3, Error PathException] r => Sem (FSWrite ': r) a -> Sem r a
- toSomeBase :: Members '[Error PathException] r => Path b File -> Sem r (SomeBase File)
Documentation
readFile :: (Member (ScopedFile (Mode fmt ReadAccess) es b handle) r, Member (Read ToEnd i) es) => Path b File -> Sem r i Source #
overwriteFile :: (Member (ScopedFile (Mode fmt WriteAccess) es b handle) r, Member (Overwrite o) es) => Path b File -> o -> Sem r () Source #
extendFile :: (Member (ScopedFile (Mode fmt WriteAccess) es b handle) r, Member (Extend o) es) => Path b File -> o -> Sem r () Source #
appendFile :: (Member (ScopedFile (Mode fmt AppendAccess) es b handle) r, Member (Append o) es) => Path b File -> o -> Sem r () Source #
readFile_single :: Member (ScopedFile (Mode fmt ReadAccess) '[Read ToEnd i] b handle) r => Path b File -> Sem r i Source #
overwriteFile_single :: Member (ScopedFile (Mode fmt WriteAccess) '[Overwrite o] b handle) r => Path b File -> o -> Sem r () Source #
extendFile_single :: Member (ScopedFile (Mode fmt WriteAccess) '[Extend o] b handle) r => Path b File -> o -> Sem r () Source #
appendFile_single :: Member (ScopedFile (Mode fmt AppendAccess) '[Append o] b handle) r => Path b File -> o -> Sem r () Source #
fsReadToScopedRead :: forall handle0 handle1 handle2 handle3 r a. Members '[ScopedFile (Mode BytesFormat ReadAccess) '[ReadToEnd] Abs handle0, ScopedFile (Mode BytesFormat ReadAccess) '[ReadToEnd] Rel handle1, ScopedFile (Mode TextFormat ReadAccess) '[ReadToEnd] Abs handle2, ScopedFile (Mode TextFormat ReadAccess) '[ReadToEnd] Rel handle3, Error PathException] r => Sem (FSRead ': r) a -> Sem r a Source #
Example:
>>>
import Polysemy.Resource ( resourceToIO )
>>>
import qualified Polysemy.FS.Scoped.Text as ST
>>>
import qualified Polysemy.FS.Scoped.ByteString as SB
>>>
import Polysemy.Scoped.Path ( weakenScopedP )
>>>
import Polysemy.FS.Scoped ( rewriteScopedFile, transformerToRewriter )
>>>
import Polysemy ( runFinal, embedToFinal, subsume_ )
>>>
import Polysemy.Error ( errorToIOFinal )
>>>
:{
fsReadToIO :: Sem '[FSRead] a -> IO (Either PathException a) fsReadToIO m = runFinal $ embedToFinal $ resourceToIO $ errorToIOFinal $ ST.readAccessToIO $ rewriteScopedFile (transformerToRewriter $ weakenScopedP @'[SAT.ReadToEnd] @_ @(Path Abs _)) $ ST.readAccessToIO $ rewriteScopedFile (transformerToRewriter $ weakenScopedP @'[SAT.ReadToEnd] @_ @(Path Rel _)) $ SB.readAccessToIO $ rewriteScopedFile (transformerToRewriter $ weakenScopedP @'[SAB.ReadToEnd] @_ @(Path Abs _)) $ SB.readAccessToIO $ rewriteScopedFile (transformerToRewriter $ weakenScopedP @'[SAB.ReadToEnd] @_ @(Path Rel _)) $ fsReadToScopedRead $ subsume_ m :}
fsWriteToScopedWrite :: forall handle0 handle1 handle2 handle3 r a. Members '[ScopedFile (Mode BytesFormat WriteAccess) '[Overwrite] Abs handle0, ScopedFile (Mode BytesFormat WriteAccess) '[Overwrite] Rel handle1, ScopedFile (Mode TextFormat WriteAccess) '[Extend] Abs handle2, ScopedFile (Mode TextFormat WriteAccess) '[Extend] Rel handle3, Error PathException] r => Sem (FSWrite ': r) a -> Sem r a Source #