 import Foundation
 import TensorFlow
 
-/// An element of a Euclidean vector space.
+/// A vector, in a Euclidean vector space with standard orthonormal basis.
+//
+// Note: Generalized vector spaces may not have Euclidean structure or a standard basis, so we may
+// eventually add a "generalized vector" protocol. However, most vectors used in computations do
+// have Euclidean structure and standard basis, so we'll reserve the short name `Vector` for
+// such vectors and use a longer name like `GeneralizedVector` for the generalized vector spaces.
 public protocol Vector: Differentiable where Self.TangentVector == Self {
   // MARK: - AdditiveArithmetic requirements, refined to require differentiability.
 

  /// The dimension of the vector.
  static var dimension: Int { get }

  /// A standard basis of vectors.
  static var standardBasis: [Self] { get }
}



  /// Returns the result of calling `body` on the scalars of `self`.
  ///
  /// Note: Depends on a determined standard basis, and therefore would not be available on a
  /// generalized vector.
  ///
  /// A default is provided that returns a pointer to `self`.
  mutating func withUnsafeMutableBufferPointer<R>(
    _ body: (UnsafeMutableBufferPointer<Double>) throws -> R
