如何获得我需要的 VectorSpace 的隐式实例?

How do I get the implicit instance of the VectorSpace I need?

我正在尝试使用spire来制作我写的更通用的线性插值函数

def interpolate(pointA: (Double,Double), pointB: (Double,Double), point: Double): Double = {
    ((pointB._1 - pointA._1) / (pointB._2 - pointA._2) * (point - pointA._2)) + pointA._1
}

我意识到这可以变得更通用,因为您可以通过这种方式插入任何向量空间的元素。所以我把它改成这样:

def interpolate[V,F](pointA: (V,F), pointB: (V,F), point: F)(implicit vs: VectorSpace[V,F]): V = {
    import spire.implicits._
    implicit val field: algebra.Field[F] = vs.scalar

    ((pointB._1 - pointA._1) :/ (pointB._2 - pointA._2) * (point - pointA._2)) + pointA._1
}

然而,当我尝试这样使用它时:

import spire.implicits._
private val ints = interpolate((Vector(1,2,3),2.0),(Vector(4,5,6),3.0),7.0)

它说找不到 VectorSpace[Seq[Int],Double] 的隐含项。有没有办法获得我需要的 VectorSpace 实例?我是否必须为我需要的每种类型手动定义一个?

我试图定义一个隐式方法,该方法通过为 Vector 类型采用 AdditiveAbGroup 和为字段类型采用 Field 来生成 VectorSpace,但我无法编译它。

错误说,找不到 VectorSpace[Seq[Int],Double] 的实例,这正是问题所在。因为在向量空间中,向量必须能被标量场整除,所以在 VectorSpace 中不能有整数向量。类型也需要相同,所以

import spire.implicits._
private val ints = interpolate((Vector(1.0,2.0,3.0),2.0),(Vector(4.0,5.0,6.0),3.0),7.0)

工作正常。