Вывод типа Scala на экзистенциальный тип

Рассмотрим следующий фрагмент кода, который является уменьшенной версией моей первоначальной проблемы:

case class RandomVariable[A](values: List[A])
case class Assignment[A](variable: RandomVariable[A], value: A)

def enumerateAll(vars: List[RandomVariable[_]], evidence: List[Assignment[_]]): Double = 
  vars match {
    case variable :: tail =>
      val enumerated = for {value  1.0
  }

Это терпит неудачу с ошибкой времени компиляции, котораяvariable был сделан вывод, чтобы иметь типRandomVariable[_0] когдаAssignment требуемый тип.AnyПочему value также не подразумевается, чтобы иметь тип ?_0 Я попытался дать экзистенциальному типу имя, чтобы дать подсказку компилятору с помощьюcase (variable: RandomVariable[T forSome {type T}]) :: tail => но это также не будет компилировать (говоря, что не может найти тип T, который ябуду заинтересован в объяснении также).

Для дальнейшей мотивации рассмотрим, когда мы фиксируем параметр типа следующим образом:

case variable :: tail =>
  def sum[A](variable: RandomVariable[A]): Double = {
    val enumerated = for {value 

Ответы на вопрос(3)

Ваш ответ на вопрос