funcons-tools-0.2.0.15: src/Funcons/ValueOperations.hs
module Funcons.ValueOperations (
execRewrites, evalOperation,
IException(..), IE(..), isIn,
) where
import Funcons.EDSL (library)
import Funcons.Types
import Funcons.MSOS
import Funcons.Patterns (isIn)
import Funcons.Exceptions (IException(..), IE(..))
import Funcons.RunOptions
import Funcons.Core.Manual
evalOperation :: Funcons -> Either IE [Values]
evalOperation f =
case execRewrites (rewriteFuncons f) of
Left exc -> Left exc
Right (ValTerm vs) -> Right vs
Right _ -> error "rewriteToTerm: did you provide a value operation?"
execRewrites :: Rewrite a -> (Either IE a)
execRewrites rew = case e_exc_rewritten of
Left (_, _, exc) -> Left exc
Right r -> Right r
where
(e_exc_rewritten, _, _) = runRewrite rew reader emptyRewriteState
reader = RewriteReader (libUnions [Funcons.EDSL.library
,Funcons.Core.Manual.library])
emptyTypeRelation defaultRunOptions undefined undefined