У меня есть этот фрагмент кода Scala:
def prologList(l: List[ScalaObject], sep: String) =
"[" + (if (l isEmpty) "" else l.reduceLeft(_ + sep + _)) + "]"
def neighbors(s: State) = prologList(trans(s).toList, ", ")
def labels(s: State) = prologList(labeling(s).toList, ", ")
Следующая-последняя строка компилируется нормально, но в последней строке я получаю сообщение об ошибке
Найдено List[Char]
, требуется List[ScalaObject]
(labeling
имеет тип Map[State, Set[Char]]
.)
Я немного удивлен, так как 1) я думал, что List[Char]
можно рассматривать как подтип List[ScalaObject]
(в отличие от Java), и 2) строка выше последней строки компилируется! (trans
имеет тип Map[State, Set[State]]
хотя ...)
Вопрос очевиден, что я делаю не так и как мне это исправить?