1
1
mirror of https://github.com/github/semantic.git synced 2024-12-22 14:21:31 +03:00

Use Evaluation in evaluate/evaluates.

This commit is contained in:
Rob Rix 2018-03-01 15:32:32 -05:00
parent 7ceb6d6370
commit 32bb45f52c

View File

@ -77,14 +77,14 @@ evaluate :: forall v term.
, AbstractValue v , AbstractValue v
, Evaluatable (Base term) , Evaluatable (Base term)
, FreeVariables term , FreeVariables term
, MonadAddressable (LocationFor v) v (Evaluator (Evaluating term v) term v) , MonadAddressable (LocationFor v) v (Evaluation term v)
, MonadFunction term v (Evaluator (Evaluating term v) term v) , MonadFunction term v (Evaluation term v)
, Recursive term , Recursive term
, Semigroup (Cell (LocationFor v) v) , Semigroup (Cell (LocationFor v) v)
) )
=> term => term
-> Final (Evaluating term v) v -> Final (Evaluating term v) v
evaluate = run @(Evaluating term v) . runEvaluator . foldSubterms eval evaluate = run @(Evaluating term v) . runEvaluator . runEvaluation . evaluateTerm
-- | Evaluate terms and an entry point to a value. -- | Evaluate terms and an entry point to a value.
evaluates :: forall v term. evaluates :: forall v term.
@ -92,15 +92,15 @@ evaluates :: forall v term.
, AbstractValue v , AbstractValue v
, Evaluatable (Base term) , Evaluatable (Base term)
, FreeVariables term , FreeVariables term
, MonadAddressable (LocationFor v) v (Evaluator (Evaluating term v) term v) , MonadAddressable (LocationFor v) v (Evaluation term v)
, MonadFunction term v (Evaluator (Evaluating term v) term v) , MonadFunction term v (Evaluation term v)
, Recursive term , Recursive term
, Semigroup (Cell (LocationFor v) v) , Semigroup (Cell (LocationFor v) v)
) )
=> [(Blob, term)] -- List of (blob, term) pairs that make up the program to be evaluated => [(Blob, term)] -- List of (blob, term) pairs that make up the program to be evaluated
-> (Blob, term) -- Entrypoint -> (Blob, term) -- Entrypoint
-> Final (Evaluating term v) v -> Final (Evaluating term v) v
evaluates pairs (_, t) = run @(Evaluating term v) (runEvaluator (localModuleTable (const (Linker (Map.fromList (map (first (dropExtensions . blobPath)) pairs)))) (foldSubterms eval t))) evaluates pairs (_, t) = run @(Evaluating term v) (runEvaluator (runEvaluation (localModuleTable (const (Linker (Map.fromList (map (first (dropExtensions . blobPath)) pairs)))) (evaluateTerm t))))
newtype Evaluation term value a = Evaluation { runEvaluation :: Evaluator (Evaluating term value) term value a } newtype Evaluation term value a = Evaluation { runEvaluation :: Evaluator (Evaluating term value) term value a }
deriving (Applicative, Functor, Monad, MonadFail) deriving (Applicative, Functor, Monad, MonadFail)