úÎdl`Ö#      !" Safe-InferredM#7Concatenates two filepaths, for example: | | > "ab" <> "c" | "abc" |$XFunction composition, but where the inner function's returnvalue | is inside a functor.%7Ternary operator: if the predicate function evalues to &5 | , take the second argument; otherwise, the first.'  getFileDirectory "a/b/c/d/e.txt"| "abcd!" | | > getFileDirectory "abcd " | "abcd4" | | > getFiledirectory "file.txt" | "."(<Takes a list of filepaths, and removes "." and ".." from it.)Creates a file at the specified path with the specified contents. | If intermediate directories do not exist, it creates them.*_Removes the oldest ancestor from a path component, e.g. | | > removeFirstPathComponent "abc" | "b/c"+`Removes the k oldest ancestors from a path component, e.g. | | > removePathComponents 2 "ab c" | "c",…Gets paths to all files in or in subdirectories of the | specified directory. Returned paths are relative to the | given directory.-If the parameter has a .! as its first character, drop it./If the parameter has a . as its last character, drop it.0KDrops elements from the given list until the predicate function | returns &2 (returned list includes element that passes test)1(intended to be used infix)2assumes a is a prefix of b; errors if false#$%'()*+,3-/012 #$'()*+,-/012#$%'()*+,3-/012None)0M Basic error type.Data type for a line.1A data type for differences between directories.  stores  Filediffs= whose filepaths are relative to directories being diffed.9The types and sets of changes possible between two files. FThe basic data type for a difference between two files. The "base" 4F is the file chose state is being compared against, and the "comp" 48 is the file being compared (the "later" of the two).Diff between two lists. 3 represents the indices at which to delete, and / represents the indices and contents to add. Gets the  stored in a . Whether a  is a deletion or not. Whether a  is a modification or not. Whether a  is a addition or not. 56789:;    56789:;None)M6Number of files added, modified, or deleted in a diff. Number of lines added in a diff."Number of lines deleted in a diff.<<NoneM Prints a  ). Prints with colors and some formatting. Prints a  ). Prints with colors and some formatting. Prints a ). Prints with colors and some formatting.None)MO(mn)ÿ0. Compute the difference between the two files (more specifically, the minimal number of changes to make to transform the file residing at the location specified by the first parameter into the second). Throws an exception if either or both of the parameters point to a directory, not a file.CFiles are allowed to not exist at either or both of the parameters.ÿ9Compute the difference between the two directories (more specifically, the minimal number of changes to make to transform the directory residing at the location specified by the first parameter into the second). Throws an exception if either or both of the parameters point to a file, not a directory.jDiff two directories, ignoring some subdirectories. The first `[FilePath]` parameter refers to the first 43 parameter, and same for the second, respectively.O(n)x. Apply a diff to a file. Returns the fail state if application fails. For more on how diff application can fail, see ".  Applies a ÿ( to a directory. Returns the fail state if any file application fails, but because of the parallelism in the implementation, all file diffs will be attempted to be applied, so if this fails, your directory will be left in an inconsistent state. For more on how diff application can fail, see ".=forks the given >Z action for each element in the given list, but waits for all to finish before returning.!rComputes the minimal number of additions and deletions needed to transform the first parameter into the second. }» diffLists "abcdefg" "wabxyze" ListDiff {dels = [(2,'c'),(3,'d'),(5,'f'),(6,'g')], adds = [(0,'w'),(3,'x'),(4,'y'),(5,'z')]}"!Applies a list diff. For example, ŠListDiff {dels = [(2,'c'),(3,'d'),(5,'f'),(6,'g')], adds = [(0,'w'),(3,'x'),(4,'y'),(5,'z')]} » applyListDiff it "abcdefg" Right "wabxyze"ÿŸReturns a fail state if the diff cannot be applied. This can happen for two reasons: first, the diff calls for a deletion at an index but the element at that index doesn't match the element believed by the to be diff at that index. Second, it can happen if the diff calls for an element to be added at an index too large for the given input. Here are respective examples of inputs that would trigger this case: –let base = "abcdefg" let faultyBase = "ab*defg" let comp = "wabxyze" let listDiff = F.diffLists base comp F.applyListDiff listDiff faultyBase -- failsand —let base = "abcdefg" let faultyBase = "abcde" let comp = "wabxyzefgq" let listDiff = F.diffLists base comp F.applyListDiff listDiff faultyBase -- fails?Best explained by example: A» insertAtProgressiveIndices [(1,'a'),(3,'b')] "def" Just "daebf"@A wrapper around A…. It gives a bit of a performance boost; it avoids hitting the memo table to an extent (exactly how much depends on the arguments).A¡Compute the longest common (potentially noncontiguous) subsequence between two sequences. Element type is fixed because memoization requires a static type.BWhen sub2 is a (not necessarily contiguous) subsequence of super,, get the index at which each element of sub appears. E.g. ,» subsequenceIndices "abe" "abcdefg" [0,1,4]CWhen sub2 is a (not necessarily contiguous) subsequence of super*, get the indices at which elements of sub do *not* appear. E.g. 1» nonSubsequenceIndices "abe" "abcdefg" [2,3,5,6]DO(n). indicesO parameter *must* be sorted in increasing order, and indices must all exist. =!"?E@ABCD !"!"  =!"?E@ABCDF      !"#$%&'()*+,-./0123456789:;<=>?@ABC()DEFGHIJKLfilediff-2.0.0Filediff.TypesFilediff.StatsFilediff.PrintingFilediffFilediff.UtilsErrorLineDiff filediffs FileChangeAddModDelbasecompchangeListDiffdelsaddslistDiffisDelisModisAddnumFilesAffected numAddedLinesnumDeletedLines printListdiff printFilediff printDiff diffFilesdiffDirectories!diffDirectoriesWithIgnoredSubdirs applyFileDiffapplyDirectoryDiff diffLists applyListDiff<.>?:ghc-prim GHC.TypesTruegetFileDirectory removeDotDirscreateFileWithContentsremoveFirstPathComponentremovePathComponents!getDirectoryContentsRecursiveSafedropInitialSlashGHC.Real/dropTrailingSlash dropUntilisPrefix dropPrefix"getDirectoryContentsRecursiveSafe'GHC.IOFilePath $fMonoidDiff $fDefaultDiff$fEqDiff$fMonoidFilediff$fMonoidFileChange$fMonoidListDiff$fDefaultListDiffnumMatchingLinesmapMParallelWaitForAllIOinsertAtProgressiveIndiceslongestCommonSubsequenceWrapperlongestCommonSubsequencesubsequenceIndicesnonSubsequenceIndicesremoveAtIndicesinsertAtProgressiveIndices'