packages feed

imsos-monad-0.2.4.0: src/Control/Monad/IMSOS/Fixed.hs

module Control.Monad.IMSOS.Fixed
  (
  -- from IMSOS.Monad
   MonadIMSOS(..), SemMonad, runIMSOS, yieldIMSOS
  ,Control.Monad.IMSOS.Monad.tell, Control.Monad.IMSOS.Monad.listen, Control.Monad.IMSOS.Monad.censor
  ,Control.Monad.IMSOS.Monad.local, Control.Monad.IMSOS.Monad.reader, Control.Monad.IMSOS.Monad.ask
  ,Control.Monad.IMSOS.Monad.get, Control.Monad.IMSOS.Monad.put, Control.Monad.IMSOS.Monad.modify
  ,fail, MonadError(..)
  ,guard, Alternative(..)
  -- from IMSOS.Rules.Relations
  ,RelID(..), HasRulesErrors(..), SemEntities(..), HasDefaults(..), runSem, Rel
  , GivesSemanticsTo, SharedSemEntities
  -- from IMSOS.Signature 
  ,Signature, HasSubSig(..)
  --,IsSubSortWitness(..), Share, IsSubSort, HasSubSort, liftTerm, lowerTerm
  -- from IMSOS.Rules.Step 
  ,HasTaggedRel(..)
  ,isValue, toValue, HasValOps(..), IsLangOp, IsValOp, ValOp, TermL, Language(..), Lang, Sort
  ,StepDefined(..), StepRes(..), steps, stepsOrHalt, stepsOrHaltWhen, StepAvailable, StepsAvailable, StepsTo
  -- to simplify writing rules
  ,premise, premiseE, trans, notrans
  -- from IMSOS.Rules.Trans
  --,TransAvailable, TransDefined(..), (:~>:)(..), EvaluatesTo(..), EvalTag, Direct, Via
  -- from ProjectionExt 
  ,(:*:)(..), (:<~), (:<|), pr, uncons, recons
  -- from Control.Monad.IMSOS.Algebras 
  ,HasAlg(..), GetCarrier(..), HasCarrier(..), eval
  ,Term, inject, project, unTerm
  ,(:+:), (:<:), caseH
  -- deriving hfunctors
  ,HFunctor, makeHFunctor, smartConstructors, derive, K(..)
  -- related to Show, Ord and Eq
  ,ShowHF(), makeShowHF
  ) where

import Control.Monad.IMSOS.Signatures
import Control.Monad.IMSOS.Monad
import Control.Monad.IMSOS.Rules.Relations
import Control.Monad.IMSOS.Algebras
import Control.Monad.IMSOS.Rules.Step
import Control.Monad.Error.Class (MonadError(..))
import Control.Applicative (Alternative(..))
import Data.Comp.ProjectionExt
import Data.Comp.Multi.Ops  ((:+:), (:<:), caseH)
import Data.Comp.Multi.Derive (makeHFunctor, HFunctor, smartConstructors, derive, makeShowHF, ShowHF)
import Data.Comp.Multi.Sum (inject)
import Data.Comp.Multi ( project, unTerm )
import Data.Comp.Multi.Term ( Term )
import Data.Comp.Multi.HFunctor (K(..))