rest-rewrite-0.4.5: src/Language/REST/RewriteRule.hs
{-# LANGUAGE MultiParamTypeClasses #-}
module Language.REST.RewriteRule where
import qualified Data.HashSet as S
-- | A class for datatypes that can be used as rewrite rules
class RewriteRule m rule term where
-- | @apply term rule@ returns the set of resulting terms that can be generated
-- from @term@ using @rule@. Multiple terms are possible if the rule applies to
-- multiple subterms. The result is embedded in a computation context @m@;
-- this enables support for SMT-based conditional rewriting, for example.
apply :: term -> rule -> m (S.HashSet term)