guarded-rewriting-0.1: performance/Common/GuardedRewriting.hs
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeSynonymInstances #-}
module Common.GuardedRewriting (
module Generics.Instant.Rewriting,
module Generics.Instant
) where
import Data.Ratio
import Generics.Instant.Rewriting
import Generics.Instant
instance Extensible Rational where
newtype Ext Rational gam = ExtRational Rational
toExt = ExtRational
instance Matchable Rational where
match' (ExtRational r) r' | r == r' = return empty
| otherwise = fail "structure mismatch"
instance Substitutable Rational where
subst' _ (ExtRational r) = return r
instance Sampleable Rational where
left' = 1
right' = 2
instance Empty Rational where
empty' = 1
instance Diffable Rational where
diff' (ExtRational r) (ExtRational r') | r == r' = Just (ExtRational r)
| otherwise = Nothing
instance Validatable Rational
type instance Finite Rational = True
instance Rewritable Rational
instance Representable Rational where
type Rep Rational = Rational
from = id
to = id