anchor.diff:        sufLen = stringLength suf;
         sLen = stringLength s;
       in
  -      if sufLen <= sLen && eqStrings suf (substring (sLen - sufLen) sufLen s) then
  +      if sufLen <= sLen && suf == substring (sLen - sufLen) sufLen s then
           substring 0 (sLen - sufLen) s
         else
           s;
  
positive.code: 
    # Appends string context from another string.
    addContextFrom = a: b: substring 0 0 a + b;
  
  
    # Compares strings not requiring context equality
    # Obviously, a workaround but works on all Nix versions.
    eqStrings = a: b: addContextFrom b a == addContextFrom a b;
  
  
    # Cut a string with a separator and produces a list of strings which were
  
negative.code: 
    # Determine whether a string has given prefix/suffix.
    hasPrefix = pref: str:
      substring 0 (stringLength pref) str == pref;
    hasSuffix = suff: str:
      let
        lenStr = stringLength str;
        lenSuff = stringLength suff;
      in lenStr >= lenSuff &&
         substring (lenStr - lenSuff) lenStr str == suff;
  
  
    # Convert a string to a list of characters (i.e. singleton strings).
  