Scala - Reforçando o tamanho do vetor no tempo de compilação

É possível impor o tamanho de umVector passou para um método em tempo de compilação? Eu quero modelar um espaço Euclidiano n-dimensional usando uma coleção de pontos no espaço que se parece com isso (isto é o que eu tenho agora):

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

Se eu tiver uma coordenada criada por meio deEuclideanPoint(Vector(1, 0, 0)), é um ponto 3D euclidiano. Assim, quero ter certeza de que o ponto de destino passou em uma chamada paradistanceTo é da mesma dimensão.

Eu sei que posso fazer isso usandoTuple1 paraTuple22, mas eu quero representar muitos espaços geométricos diferentes e eu estaria escrevendo 22 classes para cada espaço se eu fizesse isso comTuples - há uma maneira melhor?

questionAnswers(2)

yourAnswerToTheQuestion