ZFS-0.0.2: Oleg's Zipper FS

Safe HaskellNone
LanguageHaskell98

ZFS

Synopsis

Documentation

data OSReq r m Source

Constructors

OSRDone 
OSRRead (ReadK r m) 
OSRWrite String (UnitK r m) 
OSRTrace String (UnitK r m) 
OSRCommit Term (UnitK r m) 
OSRefresh (CCT r m (FSZipper r m) -> CCT r m (OSReq r m)) 

type UnitK r m = CCT r m () -> CCT r m (OSReq r m) Source

type ReadK r m = CCT r m String -> CCT r m (OSReq r m) Source

data ProcessCTX Source

Constructors

ProcessCTX 

Fields

psocket :: Socket
 

data World r Source

Constructors

World 

Fields

mountedFS :: Term
 
jobQueue :: [JobQueueT r]
 
osPrompt :: Prompt r (OSReq r IO)
 

osloop :: World t -> CCT t IO b Source

syslog :: MonadIO m => [String] -> m () Source

run'process :: (forall m. Monad m => Prompt r (OSReq r m) -> CCT r m (OSReq r m)) -> Prompt r (OSReq r IO) -> CCT r IO (OSReq r IO) Source

fsProcess :: Monad m => CCT r m (FSZipper r m) -> Prompt r (OSReq r m) -> CCT r m (OSReq r m) Source

fsloop :: forall r m. Monad m => DZipper r m Term Path -> Prompt r (OSReq r m) -> String -> CCT r m (OSReq r m) Source

fsCommands :: Monad m => [(String, FSZipper r m -> Prompt r (OSReq r m) -> String -> String -> String -> CCT r m (OSReq r m))] Source

fcmd'commit :: forall t t1 r m. Monad m => DZipper r m Term Path -> Prompt r (OSReq r m) -> t -> t1 -> String -> CCT r m (OSReq r m) Source

data FSCmdResp r m Source

Constructors

FSCS String 
FSCZ (FSZipper r m) 

fsWrapper :: forall t t1 r m. Monad m => (FSZipper r m -> Prompt r (FSCmdResp r m) -> t -> t1 -> CCT r m (FSCmdResp r m)) -> FSZipper r m -> Prompt r (OSReq r m) -> t -> t1 -> String -> CCT r m (OSReq r m) Source

cmd'help :: forall t t1 t2 m r m1 r1 m2. (Monad m, Monad m1) => FSZipper r m -> t -> t1 -> t2 -> m1 (FSCmdResp r1 m2) Source

cmd'ls :: forall t r m r1 m1. Monad m => FSZipper r m -> Prompt r (FSCmdResp r m) -> t -> String -> CCT r m (FSCmdResp r1 m1) Source

cmd'next :: forall t t1 t2 r m. Monad m => DZipper r m Term Path -> t -> t1 -> t2 -> CCT r m (FSCmdResp r m) Source

cd'zipper :: Monad m => FSZipper r m -> Prompt r (FSCmdResp r m) -> String -> CCT r m (FSZipper r m) Source

list_node :: forall t t1 t2. DZipper t t1 Term t2 -> String Source

cmd'mknode :: forall t r r1 m m1. Monad m1 => Term -> DZipper r m1 Term Path -> Prompt r (FSCmdResp r1 m) -> t -> String -> CCT r m1 (FSCmdResp r m1) Source

cmd'echo :: forall t r m. Monad m => DZipper r m Term Path -> Prompt r (FSCmdResp r m) -> t -> String -> CCT r m (FSCmdResp r m) Source

zip'back'to'place :: forall r m r1 m1 term. Monad m => Prompt r (FSCmdResp r m) -> DZipper r1 m1 term Path -> DZipper r m Term Path -> CCT r m (FSZipper r m) Source

zipback'toplace z z1| brings z1 to the same place as z Right now we use a pathetic algorithm -- but it works...

del'zipper :: forall r m. Monad m => DZipper r m Term Path -> Prompt r (FSCmdResp r m) -> String -> CCT r m (FSZipper r m, Term) Source

ins'zipper :: forall r m. Monad m => Term -> FSZipper r m -> Prompt r (FSCmdResp r m) -> String -> CCT r m (FSCmdResp r m) Source

cmd'rm :: forall t r m. Monad m => DZipper r m Term Path -> Prompt r (FSCmdResp r m) -> t -> String -> CCT r m (FSCmdResp r m) Source

cmd'mv :: forall t r m. Monad m => DZipper r m Term Path -> Prompt r (FSCmdResp r m) -> t -> String -> CCT r m (FSCmdResp r m) Source

cmd'cp :: forall t r m. Monad m => DZipper r m Term Path -> Prompt r (FSCmdResp r m) -> t -> String -> CCT r m (FSCmdResp r m) Source

svc :: Monad m => Prompt r b -> ((CCT r m a -> CCT r m b) -> b) -> CCT r m a Source

breakspan :: (a -> Bool) -> [a] -> ([a], [a]) Source