{-# LANGUAGE PackageImports #-} module Network.Spata.Type where import Data.DList (DList) import "mtl" Control.Monad.Writer type Assoc = [(String, String)] type Guard = String -> Assoc -> Either String Assoc -- type Guards = [String] -> Assoc -> Either String Assoc type Task = Assoc -> Either String Assoc type GuardiansT a = Writer (DList Task) a type Guardians = GuardiansT () type GuardM m = String -> Assoc -> m (Either String Assoc) type TaskM m = Assoc -> m (Either String Assoc) type GuardiansTM a m = Writer (DList (TaskM m)) a type GuardiansM m = GuardiansTM () m