hdiff-0.0.1: Pattern-Expression-based differencing of arbitrary types.

Safe HaskellNone
LanguageHaskell2010

Data.HDiff.Change.TreeEditDistance

Contents

Synopsis

Regular Longest Common Subsequence * --

data ListES a Source #

Constructors

LC Int a (ListES a) 
LD Int a (ListES a) 
LI Int a (ListES a) 
LLP_Nil 
Instances
Eq a => Eq (ListES a) Source # 
Instance details

Defined in Data.HDiff.Change.TreeEditDistance

Methods

(==) :: ListES a -> ListES a -> Bool #

(/=) :: ListES a -> ListES a -> Bool #

Show a => Show (ListES a) Source # 
Instance details

Defined in Data.HDiff.Change.TreeEditDistance

Methods

showsPrec :: Int -> ListES a -> ShowS #

show :: ListES a -> String #

showList :: [ListES a] -> ShowS #

meet :: ListES a -> ListES a -> ListES a Source #

type Table a = Map (Int, Int) (ListES a) Source #

lcsW :: forall a. Eq a => (a -> Int) -> [a] -> [a] -> ListES a Source #

Translating Changes to Edit Scripts * --

fromNA :: NA ki (Fix ki codes) at -> Holes ki codes (MetaVarIK ki) at Source #

toES :: (EqHO ki, ShowHO ki, TestEquality ki) => CChange ki codes at -> NA ki (Fix ki codes) at -> Either String (ES ki codes '[at] '[at]) Source #

type ToES ki codes = ReaderT (Subst ki codes (MetaVarIK ki), ListES Int) (Except String) Source #

askSubst :: ToES ki codes (Subst ki codes (MetaVarIK ki)) Source #

gcpy :: Cof ki codes at l -> ES ki codes (l :++: ds) (l :++: is) -> ES ki codes (at ': ds) (at ': is) Source #

gins :: Cof ki codes at l -> ES ki codes ds (l :++: is) -> ES ki codes ds (at ': is) Source #

gdel :: Cof ki codes at l -> ES ki codes (l :++: ds) is -> ES ki codes (at ': ds) is Source #

compress :: (EqHO ki, TestEquality ki) => ES ki codes is ds -> ES ki codes is ds Source #

cpyOnly :: (EqHO ki, ShowHO ki, TestEquality ki) => NP (Holes ki codes (MetaVarIK ki)) xs -> ToES ki codes (ES ki codes xs xs) Source #

delOnly :: (EqHO ki, ShowHO ki, TestEquality ki) => NP (Holes ki codes (MetaVarIK ki)) ds -> ToES ki codes (ES ki codes ds '[]) Source #

insOnly :: (EqHO ki, ShowHO ki, TestEquality ki) => NP (Holes ki codes (MetaVarIK ki)) is -> ToES ki codes (ES ki codes '[] is) Source #

listAssoc :: ListPrf a -> Proxy b -> Proxy c -> ListPrf ((a :++: b) :++: c) :~: ListPrf (a :++: (b :++: c)) Source #

esDelListPrf :: ES ki codes ds is -> ListPrf ds Source #

esInsListPrf :: ES ki codes ds is -> ListPrf is Source #

cofListPrf :: Cof ki codes at l -> ListPrf l Source #

esDelListProxy :: ES ki codes ds is -> Proxy ds Source #

esDelListProxy' :: ES ki codes (d ': ds) is -> Proxy ds Source #

esInsListProxy :: ES ki codes ds is -> Proxy is Source #

esInsListProxy' :: ES ki codes ds (i ': is) -> Proxy is Source #

esDelCong :: (ListPrf ds :~: ListPrf ds') -> ES ki codes ds is -> ES ki codes ds' is Source #

esInsCong :: (ListPrf is :~: ListPrf is') -> ES ki codes ds is -> ES ki codes ds is' Source #

appendES :: ES ki codes ds is -> ES ki codes ds' is' -> ES ki codes (ds :++: ds') (is :++: is') Source #

fetch :: (EqHO ki, ShowHO ki, TestEquality ki) => MetaVarIK ki at -> ToES ki codes (Holes ki codes (MetaVarIK ki) at) Source #

delSync :: (EqHO ki, ShowHO ki, TestEquality ki) => MetaVarIK ki at -> NP (Holes ki codes (MetaVarIK ki)) ds -> NP (Holes ki codes (MetaVarIK ki)) is -> ToES ki codes (ES ki codes (at ': ds) is) Source #

insSync :: (EqHO ki, ShowHO ki, TestEquality ki) => MetaVarIK ki at -> NP (Holes ki codes (MetaVarIK ki)) ds -> NP (Holes ki codes (MetaVarIK ki)) is -> ToES ki codes (ES ki codes ds (at ': is)) Source #

delPhase :: (EqHO ki, ShowHO ki, TestEquality ki) => NP (Holes ki codes (MetaVarIK ki)) ds -> NP (Holes ki codes (MetaVarIK ki)) is -> ToES ki codes (ES ki codes ds is) Source #

insPhase :: (EqHO ki, ShowHO ki, TestEquality ki) => NP (Holes ki codes (MetaVarIK ki)) ds -> NP (Holes ki codes (MetaVarIK ki)) is -> ToES ki codes (ES ki codes ds is) Source #