tree-diff (hackage): Common diff algorithm works on list structures:  This package works on trees.  This package also provides a way to diff arbitrary ADTs, using Generics-derivable helpers.  This package differs from 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.
Keywords: data|gpl|library|testing