anchor.diff:    # Map a function over a list and concatenate the resulting strings.
     concatMapStrings = f: list: concatStrings (map f list);
     concatImapStrings = f: list: concatStrings (lib.imap f list);
  -  
  +
   
     # Place an element between each element of a list, e.g.,
     # `intersperse "," ["a" "b" "c"]' returns ["a" "," "b" "," "c"].
  
positive.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"].
  
negative.code:     then []
      else map (p: substring p 1 s) (lib.range 0 (sub l 1));
  
  
    # Manipulate a string charcater by character and replace them by strings
    # before concatenating the results.
    stringAsChars = f: s:
  