Îõ³h*86      !"#$%&'()*+,-./0123451.0.11(c) Sterling Clover 2008-2011, Kevin Charter 2011 BSD 3 Clauses.clover@gmail.com experimentalportable Safe-Inferred¦DiffThis is - specialized so both sides are the same type.DiffA value is either from the  list, the  or from . Ç contains both the left and right values, in case you are using a form of equality that doesn't check all data (for example, if you are using a newtype to only perform equality on side of a tuple).DiffÉTakes two lists and returns a list of differences between them. This is  with 6 used as predicate. Ú> getDiff ["a","b","c","d","e"] ["a","c","d","f"] [Both "a" "a",First "b",Both "c" "c",Both "d" "d",First "e",Second "f"] > getDiff "abcde" "acdf" [Both 'a' 'a',First 'b',Both 'c' 'c',Both 'd' 'd',First 'e',Second 'f']DiffÞTakes two lists and returns a list of differences between them, grouped into chunks. This is  with 6 used as predicate. Ü> getGroupedDiff "abcde" "acdf" [Both "a" "a",First "b",Both "cd" "cd",First "e",Second "f"]Diff A form of  with no 7Ì constraint. Instead, an equality predicate is taken as the first argument.  (c) David Fox (2015) BSD 3 Clauses.clover@gmail.com experimentalportable Safe-Inferred …Diff A version of groupByÛ that does not assume the argument function is transitive. This is used to partition the 7 list into segments that begin and end with matching (%) text, with and have non-matching ( and ) text in the middle. ¹let notBoth1 a b = not (a == 1 || b == 1) in groupBy' notBoth1 [1,1,2,3,1,1,4,5,6,1] [[1],[1,2,3,1],[1,4,5,6,1]] groupBy notBoth1 [1,1,2,3,1,1,4,5,6,1] [[1],[1,2,3],[1],[1,4,5,6],[1]]ØIn the first result the list is split anywhere there are two adjacent ones, as desired.Diff µ> let textA = ["a","b","c","d","e","f","g","h","i","j","k"] > let textB = ["a","b","d","e","f","g","h","i","j"] > let diff = getContextDiff (Just 2) textA textB > prettyContextDiff (text "file1") (text "file2") (text . unnumber) diff --- file1 +++ file2 @@ -1,5 +1,4 @@ a b -c d e @@ -9,3 +8,2 @@ i j -kDiffõIf for some reason you need the line numbers stripped from the result of getContextDiff for backwards compatibility.Diff4Pretty print a ContextDiff in the manner of diff -u.Diff2Number of context elements, Nothing means infiniteDiff2Number of context elements, Nothing means infiniteDiffDocument 1 nameDiffDocument 2 nameDiffElement pretty printerDiffDocument 1 nameDiffDocument 2 nameDiffElement pretty printer  1(c) Sterling Clover 2008-2011, Kevin Charter 2011 BSD 3 Clauses.clover@gmail.com experimentalportable Safe-Inferred!Diff-Diff Operation representing changes to apply%Diff#Line Range: start, end and contents)DiffLine number alias*Diff Converts Diffs to DiffOperations+DiffÕpretty print the differences. The output is similar to the output of the diff utility â> putStr (ppDiff (getGroupedDiff ["a","b","c","d","e"] ["a","c","d","f"])) 2d1 < b 5c4 < e --- > f,Diffpretty print of diff operations-Diff,Parse pretty printed Diffs as DiffOperations !$"#%('&)*+,- *+,-)%('&!$"#8      !"#$%&'(()*+,-./0123456789:89;