anchor.diff:       second subtype, compare elements of a single subtype with `yes`
        and `no` respectively.
   
  -     Example:
  -
  +     Type: (a -> bool) -> (a -> a -> int) -> (a -> a -> int) -> (a -> a -> int)
  +
  +     Example:
          let cmp = splitByAndCompare (hasPrefix "foo") compare compare; in
   
          cmp "a" "z" => -1
  
positive.code:        mapNullable (x: x+1) 22
         => 23
    */
    mapNullable = f: a: if isNull a then a else f a;
  
    # Pull in some builtins not included elsewhere.
    inherit (builtins)
  
negative.code: 
    ## nixpks version strings
  
    /* Returns the current full nixpkgs version number. */
    version = release + versionSuffix;
  
    /* Returns the current nixpkgs release number as string. */
    release = lib.strings.fileContents ../.version;
  
    /* Returns the current nixpkgs version suffix as string. */
    versionSuffix =
      let suffixFile = ../.version-suffix;
      in if pathExists suffixFile
      then lib.strings.fileContents suffixFile
      else "pre-git";
  
    /* Attempts to return the the current revision of nixpkgs and
       returns the supplied default value otherwise.
  
       Type: revisionWithDefault :: string -> string
    */
    revisionWithDefault =
      # Default value to return if revision can not be determined
      default:
      let
        revisionFile = "${toString ./..}/.git-revision";
        gitRepo      = "${toString ./..}/.git";
  