anchor.diff:          then []
           else [first] ++ range (first + 1) last;
   
  -
  -  # Partition the elements of a list in two lists, `right' and
  -  # `wrong', depending on the evaluation of a predicate.
  +  /* Splits the elements of a list in two lists, `right' and
  +     `wrong', depending on the evaluation of a predicate.
  +
  +     Example:
  +       partition (x: x > 2) [ 5 1 2 3 4 ]
  +       => { right = [ 5 3 4 ]; wrong = [ 1 2 ]; }
  +  */
     partition = pred:
       fold (h: t:
         if pred h
  
positive.code:               [ (elemAt list n) ] ++ take' (n + 1);
          in take' 0;
  
  
    # Remove the first (at most) N elements of a list.
    drop =
      if builtins ? genList then
        count: list: sublist count (length list) list
  
negative.code:       if len < 2 then list
        else (sort strictLess pivot.left) ++  [ first ] ++  (sort strictLess pivot.right));
  
    /* Return the first (at most) N elements of a list.
  
       Example:
         take 2 [ "a" "b" "c" "d" ]
         => [ "a" "b" ]
         take 2 [ ]
         => [ ]
    */
    take =
      if builtins ? genList then
        count: sublist 0 count
  