Scala - Hacer cumplir el tamaño de Vector en tiempo de compilación

¿Es posible imponer el tamaño de unaVector Pasado a un método en tiempo de compilación? Quiero modelar un espacio euclidiano n-dimensional utilizando una colección de puntos en el espacio que se parece a esto (esto es lo que tengo ahora):

case class EuclideanPoint(coordinates: Vector[Double]) {
  def distanceTo(desination: EuclieanPoint): Double = ???
}

Si tengo una coordenada que se crea a través deEuclideanPoint(Vector(1, 0, 0)), es un punto euclidiano 3D. Dado esto, quiero asegurarme de que el punto de destino pasado en una llamada adistanceTo Es de la misma dimensión.

Sé que puedo hacer esto usandoTuple1 aTuple22, pero quiero representar muchos espacios geométricos diferentes y estaría escribiendo 22 clases para cada espacio si lo hiciera conTuples - hay una manera mejor?

Respuestas a la pregunta(2)

Su respuesta a la pregunta