anchor.diff:  /* String manipulation functions. */
   
  -let lib = import ./default.nix;
  -
  -inherit (builtins) length;
  -
  +let
  +  lib = import ./default.nix;
  +  inherit (builtins)
  +    length;
   in
   
   rec {
   
  -  inherit (builtins) stringLength substring head tail isString replaceStrings;
  -
  +  inherit (builtins)
  +    head
  +    isString
  +    replaceStrings
  +    stringLength
  +    substring
  +    tail;
   
     # Concatenate a list of strings.
     concatStrings =
  
positive.code:         substring startAt sepLen s == sep;
  
        recurse = index: startAt:
          let cutUntil = i: [(substring startAt (i - startAt) s)]; in
          if index < lastSearch then
            if startWithSep index then
              let restartAt = index + sepLen; in
              cutUntil index ++ recurse restartAt restartAt
            else
              recurse (index + 1) startAt
          else
            cutUntil sLen;
      in
        recurse 0 0;
  
  
    # return the suffix of the second argument if the first argument match its
    # prefix. e.g.,
  
negative.code:   stringToCharacters = s:
      map (p: substring p 1 s) (lib.range 0 (stringLength s - 1));
  
    # Manipulate a string charactter by character and replace them by
    # strings before concatenating the results.
    stringAsChars = f: s:
  