O(ND) diff algorithm in Haskell
