tree-diff-0: Diffing of (expression) trees.

Safe HaskellNone
LanguageHaskell2010

Data.TreeDiff.Expr

Contents

Description

This module uses Expr for richer diffs than based on Tree.

Synopsis

Types

data Expr Source #

A untyped Haskell-like expression.

Having richer structure than just Tree allows to have richer diffs.

Constructors

App ConstructorName [Expr]

application

Rec ConstructorName (Map FieldName Expr)

record constructor

Lst [Expr]

list constructor

Instances

type ConstructorName = String Source #

Constructor name is a string

type FieldName = String Source #

Record field name is a string too.

data EditExpr Source #

Type used in the result of ediff.

data Edit a Source #

List edit operations

The Swp constructor is redundant, but it let us spot a recursion point when performing tree diffs.

Constructors

Ins a

insert

Del a

delete

Cpy a

copy unchanged

Swp a a

swap, i.e. delete + insert

Instances

Show a => Show (Edit a) Source # 

Methods

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

show :: Edit a -> String #

showList :: [Edit a] -> ShowS #

exprDiff :: Expr -> Expr -> Edit EditExpr Source #

Diff two Expr.

For examples see ediff in Data.TreeDiff.Class.