diff --git a/src/Analysis/Abstract/Evaluating.hs b/src/Analysis/Abstract/Evaluating.hs index 5c8b49a93..ce3c3fc26 100644 --- a/src/Analysis/Abstract/Evaluating.hs +++ b/src/Analysis/Abstract/Evaluating.hs @@ -54,6 +54,7 @@ deriving instance (Member Fail effects, MonadEvaluator (Evaluator term value eff instance ( Evaluatable (Base term) , FreeVariables term + , Members (EvaluatorEffects term value) effects , MonadAddressable (LocationFor value) (Evaluation term value effects) , MonadValue value (Evaluation term value effects) , Recursive term diff --git a/src/Control/Abstract/Analysis.hs b/src/Control/Abstract/Analysis.hs index d91245b1a..b5c5cb9ee 100644 --- a/src/Control/Abstract/Analysis.hs +++ b/src/Control/Abstract/Analysis.hs @@ -18,7 +18,7 @@ import Prologue -- | A 'Monad' in which one can evaluate some specific term type to some specific value type. -- -- This typeclass is left intentionally unconstrained to avoid circular dependencies between it and other typeclasses. -class Monad m => MonadAnalysis m where +class MonadEvaluator m => MonadAnalysis m where -- | Analyze a term using the semantics of the current analysis. This should generally only be called by definitions of 'evaluateTerm' and 'analyzeTerm' in this or other instances. analyzeTerm :: SubtermAlgebra (Base (TermFor m)) (TermFor m) (m (ValueFor m))