from Data.Functor import class Functor
from Control.Applicative import class Applicative, class <*>, class pure
from Control.Monad import class Monad
+from Control.Monad.State import :: StateT
import ASDS.Source
import ASDS.Parallel
import ASDS.Select
import ASDS.Lens
+:: PViewT m a :== StateT [NRequest m] m a
+:: NRequest m = NRequest String (m ()) Dynamic
+
//* Read a share with one rewrite step
-class read v :: (v m p r w) p -> m (ReadResult m p r w) | TC r & Monad m
+class read v :: (v m p r w) p -> PViewT m (ReadResult m p r w) | TC r & Monad m
//* Write a share with one rewrite step
-class write v :: (v m p r w) p w -> m (WriteResult m p r w) | TC w & Monad m
+class write v :: (v m p r w) p w -> PViewT m (WriteResult m p r w) | TC w & Monad m
//* Result of a single read rewrite
:: ReadResult m p r w
instance write SDS
//* Read a share completely
-getShare :: (sds m () r w) -> m r | Monad m & read sds & TC r & TC w
+getShare :: (sds m () r w) -> PViewT m r | Monad m & read sds & TC r & TC w
//* Write a share completely
-setShare :: w (sds m () r w) -> m () | Monad m & write sds & TC r & TC w
+setShare :: w (sds m () r w) -> PViewT m () | Monad m & write sds & TC r & TC w
//* Update a share completely
-updShare :: (r -> w) (sds m () r w) -> m w | Monad m & read sds & write sds & TC r & TC w
+updShare :: (r -> w) (sds m () r w) -> PViewT m w | Monad m & read sds & write sds & TC r & TC w