Copyright | (c) Hisaket VioletRed 2022 |
---|---|
License | AGPL-3.0-or-later |
Maintainer | hisaket@outlook.jp |
Stability | experimental |
Portability | POSIX |
Safe Haskell | None |
Language | Haskell2010 |
Example:
>>>
import qualified Polysemy.SequentialAccess as SA
>>>
import qualified Polysemy.SequentialAccess.Text as SAT
>>>
import Polysemy ( runFinal, embedToFinal, embed )
>>>
import Polysemy.Resource ( resourceToIOFinal )
>>>
import Polysemy.Path
>>>
import Polysemy.FS.Scoped ( scopedFile, AccessMode (RwAccess) )
>>>
import Control.Monad.Extra ( whenM )
>>>
import System.Directory ( doesFileExist, removeFile )
>>>
import Control.Exception ( throwIO )
>>>
:{
runFinal $ embedToFinal $ resourceToIOFinal $ rwAccessToIO do let path = [absfile|/tmp/polysemy-scoped-fs-test|] embed $ whenM (doesFileExist $ toFilePath path) $ throwIO $ userError "Abort to prevent overwriting." scopedFile @RwAccess path do SA.extend "This text will be deleted." SA.resize SA.NullSize SA.extend "foo" SA.extend "bar" SA.seek SA.TOF embed . print =<< SA.read SA.ToEnd embed $ removeFile $ toFilePath path :} "foobar"
Synopsis
- readAccessToIO :: Members '[Embed IO, Resource] r => Access TextFormat ReadAccess (ReadLine ': (ReadToEnd ': Cursor)) r b
- writeAccessToIO :: Members '[Embed IO, Resource] r => Access TextFormat WriteAccess (Extend ': (Clear ': Cursor)) r b
- rwAccessToIO :: Members '[Embed IO, Resource] r => Access TextFormat RwAccess (ReadLine ': (ReadToEnd ': (Extend ': (Clear ': Cursor)))) r b
- appendAccessToIO :: Members '[Embed IO, Resource] r => Access TextFormat AppendAccess '[Append, Clear] r b
Documentation
readAccessToIO :: Members '[Embed IO, Resource] r => Access TextFormat ReadAccess (ReadLine ': (ReadToEnd ': Cursor)) r b Source #
An interpreter for read open mode with text.
writeAccessToIO :: Members '[Embed IO, Resource] r => Access TextFormat WriteAccess (Extend ': (Clear ': Cursor)) r b Source #
An interpreter for write open mode with text.
rwAccessToIO :: Members '[Embed IO, Resource] r => Access TextFormat RwAccess (ReadLine ': (ReadToEnd ': (Extend ': (Clear ': Cursor)))) r b Source #
An interpreter for read and write open mode with text.
appendAccessToIO :: Members '[Embed IO, Resource] r => Access TextFormat AppendAccess '[Append, Clear] r b Source #
An interpreter for append open mode with text.