anchor.diff:          state
   
       // TODO :
  -    // foldBacki
       // foldPairs, foldBackPairs
       // derive    // takes a 'T -> 'T -> 'T like reduce, but only performs one step; used to perform 'divided differences'
  +        // Other possible names: reduceOnce, reduceStep
   
   
   //
  
positive.code:             state <- folder.Invoke (i, state, array.[i])
          state
  
      /// Applies a function to each element of the array, returning a new array whose elements are
      /// tuples of the original element and the function result for that element.
      [<CompiledName("ProjectValues")>]
      let projectValues (projection : 'Key -> 'U) (array : 'Key[]) =
          // Preconditions
          checkNonNull "array" array
  
          array |> Array.map (fun x -> x, projection x)
  
      //
      [<CompiledName("ProjectKeys")>]
      let projectKeys (projection : 'T -> 'Key) (array : 'T[]) =
          // Preconditions
          checkNonNull "array" array
  
          array |> Array.map (fun x -> projection x, x)
  
      /// Returns the first element in the array.
      let [<NoDynamicInvocation>] inline first (array : 'T[]) =
          if Array.isEmpty array then
              invalidOp "Cannot retrieve the first element of an empty array."
          else array.[0]
  
      /// Returns the index of the last element in the array.
      let [<NoDynamicInvocation>] inline lastIndex (array : 'T[]) =
          if Array.isEmpty array then
              invalidOp "The array is empty."
          else array.Length - 1
  
      /// Returns the last element in the array.
      let [<NoDynamicInvocation>] inline last (array : 'T[]) =
          if Array.isEmpty array then
              invalidOp "Cannot retrieve the last element of an empty array."
          else array.[array.Length - 1]
  
      /// Splits an array into one or more arrays; the specified predicate is applied
      /// to each element in the array, and whenever it returns true, that element will
  
negative.code:     let [<NoDynamicInvocation>] inline toSet (array : 'T[]) : Set<'T> =
          Set.ofArray array
  
      /// Applies a function to each element of the array, returning a new array whose elements are
      /// tuples of the original element and the function result for that element.
      [<CompiledName("ProjectValues")>]
      let projectValues (projection : 'Key -> 'U) (array : 'Key[]) =
          // Preconditions
          checkNonNull "array" array
  
          array |> Array.map (fun x -> x, projection x)
  
      //
      [<CompiledName("ProjectKeys")>]
      let projectKeys (projection : 'T -> 'Key) (array : 'T[]) =
          // Preconditions
          checkNonNull "array" array
  
          array |> Array.map (fun x -> projection x, x)
  
      /// Returns the first element in the array.
      let [<NoDynamicInvocation>] inline first (array : 'T[]) =
          if Array.isEmpty array then
              invalidOp "Cannot retrieve the first element of an empty array."
          else array.[0]
  
      /// Returns the index of the last element in the array.
      let [<NoDynamicInvocation>] inline lastIndex (array : 'T[]) =
          if Array.isEmpty array then
              invalidOp "The array is empty."
          else array.Length - 1
  
      /// Returns the last element in the array.
      let [<NoDynamicInvocation>] inline last (array : 'T[]) =
          if Array.isEmpty array then
              invalidOp "Cannot retrieve the last element of an empty array."
          else array.[array.Length - 1]
  
      /// Applies a function to each element of the collection, threading an accumulator argument through the computation.
      /// The integer index passed to the function indicates the array index of the element being transformed.
      [<CompiledName("FoldIndexed")>]
  