haskell@gentoo.org Gentoo Haskell Common diff algorithm works on list structures: @ diff :: Eq a => [a] -> [a] -> [Edit a] @ This package works on trees. @ treeDiff :: Eq a => Tree a -> Tree a -> Edit (EditTree a) @ This package also provides a way to diff arbitrary ADTs, using @Generics@-derivable helpers. This package differs from <http://hackage.haskell.org/package/gdiff gdiff>, in a two ways: @tree-diff@ doesn't have patch function, and the "edit-script" is a tree itself, which is useful for pretty-printing. @ >>> prettyEditExpr $ ediff (Foo 42 [True, False] "old") (Foo 42 [False, False, True] "new") Foo {fooBool = [-True, +False, False, +True], fooInt = 42, fooString = -"old" +"new"} @