anchor.diff:        map f (stringToCharacters s)
       );
   
  -    
  +
     # same as vim escape function.
     # Each character contained in list is prefixed by "\"
     escape = list : string :
       stringAsChars (c: if lib.elem c list then "\\${c}" else c) string;
   
  -    
  +
     # still ugly slow. But more correct now
     # [] for zsh
     escapeShellArg = lib.escape (stringToCharacters "\\ ';$`()|<>\t*[]");
   
  -  
  +
     # replace characters by their substitutes.  This function is equivalent to
     # the `tr' command except that one character can be replace by multiple
     # ones.  e.g.,
  
positive.code:   # Construct a Unix-style search path consisting of each `subDir"
    # directory of the given list of packages.  For example,
    # `makeSearchPath "bin" ["x" "y" "z"]' returns "x/bin:y/bin:z/bin".
    makeSearchPath = subDir: packages: 
      concatStringsSep ":" (map (path: path + "/" + subDir) packages);
  
  
  
negative.code:     in
        stringAsChars subst s;
  
  
    # Compares strings not requiring context equality
    # Obviously, a workaround but works on all Nix versions
    eqStrings = a: b: (a+(substring 0 0 b)) == ((substring 0 0 a)+b);
  
  
    # Cut a string with a separator and produces a list of strings which were
    # separated by this separator. e.g.,
    # `splitString "." "foo.bar.baz"' returns ["foo" "bar" "baz"].
  