par package:shake

Execute two operations in parallel, based on parallel.
Execute a list of actions in parallel. In most cases need will be more appropriate to benefit from parallelism. If the two types of Action are different dependencies which ultimately boil down to apply, using Applicative operations will still ensure the dependencies occur in parallel. The main use of this function is to run work that happens in an Action in parallel.
Given the text of a Makefile, extract the list of targets and dependencies. Assumes a small subset of Makefile syntax, mostly that generated by gcc -MM.
parseMakefile "a: b c\nd : e" == [("a",["b","c"]),("d",["e"])]
Add a trailing file path separator if one is not already present.
hasTrailingPathSeparator (addTrailingPathSeparator x)
hasTrailingPathSeparator x ==> addTrailingPathSeparator x == x
Posix:    addTrailingPathSeparator "test/rest" == "test/rest/"
Remove any trailing path separators
dropTrailingPathSeparator "file/test/" == "file/test"
dropTrailingPathSeparator "/" == "/"
Windows:  dropTrailingPathSeparator "\\" == "\\"
Posix:    not (hasTrailingPathSeparator (dropTrailingPathSeparator x)) || isDrive x
File extension character
extSeparator == '.'
Is an item either a directory or the last character a path separator?
hasTrailingPathSeparator "test" == False
hasTrailingPathSeparator "test/" == True
Is the character an extension character?
isExtSeparator a == (a == extSeparator)
Rather than using (== pathSeparator), use this. Test if something is a path separator.
isPathSeparator a == (a `elem` pathSeparators)
Is the character a file separator?
isSearchPathSeparator a == (a == searchPathSeparator)
The character that separates directories. In the case where more than one character is possible, pathSeparator is the 'ideal' one.
Windows: pathSeparator == '\\'
Posix:   pathSeparator ==  '/'
isPathSeparator pathSeparator
The list of all possible separators.
Windows: pathSeparators == ['\\', '/']
Posix:   pathSeparators == ['/']
pathSeparator `elem` pathSeparators
The character that is used to separate the entries in the $PATH environment variable.
Windows: searchPathSeparator == ';'
Posix:   searchPathSeparator == ':'