SPmonad

module SPmonad where
import SP(SP)
import ParSP(seqSP)
import Spops
import StateMonads(Mk(..),toMkc) --,bmk,toMs

type SPm i o ans = Mk (SP i o) ans

putsSPm :: [o] -> SPm i o ()
putsSPm = toMkc . putsSP

putSPm :: o -> SPm i o ()
putSPm = toMkc . putSP

getSPm :: SPm i o i
getSPm = Mk getSP

nullSPm :: SPm i o ()
nullSPm = return ()

monadSP :: (SPm i o ()) -> SP i o
monadSP (Mk spm) = spm (const nullSP)

toSPm :: (SP i o) -> SPm i o ()
toSPm sp = toMkc (seqSP sp)