term-rewriting-0.2.1: src/Data/Rewriting/Rule/Type.hs
-- This file is part of the 'term-rewriting' library. It is licensed
-- under an MIT license. See the accompanying 'LICENSE' file for details.
--
-- Authors: Bertram Felgenhauer
module Data.Rewriting.Rule.Type (
module Data.Rewriting.Term.Type,
Rule (..),
map,
mapSides
) where
import Prelude hiding (map)
import Data.Rewriting.Term.Type hiding (map, fold)
import qualified Data.Rewriting.Term.Type as T
-- | Rewrite rule with left-hand side and right-hand side.
data Rule f v = Rule { lhs :: Term f v, rhs :: Term f v }
deriving (Ord, Eq, Show)
mapSides :: (Term f v -> Term f' v') -> Rule f v -> Rule f' v'
mapSides f r = Rule{ lhs = f (lhs r), rhs = f (rhs r) }
map :: (f -> f') -> (v -> v') -> Rule f v -> Rule f' v'
map f v = mapSides (T.map f v)