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 state reader = RewriteReader (libUnions [Funcons.EDSL.library ,Funcons.Core.Manual.library]) emptyTypeRelation defaultRunOptions undefined undefined state = RewriteState