ron-0.3: RON, RON-RDT, and RON-Schema

Safe HaskellNone
LanguageHaskell2010

RON.Storage.IO

Description

A real-world file storage.

Typical usage:

import RON.Storage.IO as Storage

main = do
    let dataDir = "./data/"
    h <- Storage.newHandle dataDir
    runStorage h $ do
        obj <- newObject Note{active = True, text = "Write an example"}
        createDocument obj
Synopsis

Documentation

data Handle Source #

Storage handle (uses the “Handle pattern”).

data Storage a Source #

Environment is the dataDir

Instances
Monad Storage Source # 
Instance details

Defined in RON.Storage.IO

Methods

(>>=) :: Storage a -> (a -> Storage b) -> Storage b #

(>>) :: Storage a -> Storage b -> Storage b #

return :: a -> Storage a #

fail :: String -> Storage a #

Functor Storage Source # 
Instance details

Defined in RON.Storage.IO

Methods

fmap :: (a -> b) -> Storage a -> Storage b #

(<$) :: a -> Storage b -> Storage a #

Applicative Storage Source # 
Instance details

Defined in RON.Storage.IO

Methods

pure :: a -> Storage a #

(<*>) :: Storage (a -> b) -> Storage a -> Storage b #

liftA2 :: (a -> b -> c) -> Storage a -> Storage b -> Storage c #

(*>) :: Storage a -> Storage b -> Storage b #

(<*) :: Storage a -> Storage b -> Storage a #

MonadIO Storage Source # 
Instance details

Defined in RON.Storage.IO

Methods

liftIO :: IO a -> Storage a #

ReplicaClock Storage Source # 
Instance details

Defined in RON.Storage.IO

MonadStorage Storage Source # 
Instance details

Defined in RON.Storage.IO

MonadError String Storage Source # 
Instance details

Defined in RON.Storage.IO

Methods

throwError :: String -> Storage a #

catchError :: Storage a -> (String -> Storage a) -> Storage a #

newHandle :: FilePath -> IO Handle Source #

Create new storage handle

runStorage :: Handle -> Storage a -> IO a Source #

Run a Storage action