У меня есть следующий код:Scala список переставить (возвратное степенное несоответствие типов)
type foo= List[bar]
def emtfoo= List[bar]()
def permute(s1:Set[foo],s2:Set[foo]):Set[foo]={
for{
x<-s1
y<-s2
}yield permutatefoo(x,y,e,emtfoo)
def permutatefoo(l1:foo,l2:foo,sofar:foo):Set[foo]={
if (l1.equals (emtfoo)) {
Set{sofar:+l2}
}
else
{
combine(permutatefoo(l1.drop(1),l2,l1.take(1):::sofar),
permutatefoo(l1,l2.drop(1),l2.take(1):::sofar))
}
}
def combine(s1:Set[foo],s2:Set[foo]):Set[foo] =
for{
x <- s1
y<- s2
} yield x ::: y
Каких должна быть довольно прямым кодом permutate 2 комплекта списков в единый комплекс, который имеет все возможные permamutations обоего списков в порядок без элемента, появляющегося перед элементом in, не был перед самим списком (поэтому, если у нас есть список a = 1,2,3 и список b = a, b, c, тогда он должен вернуть Set { 1, a, 2, b, 3, c-1,2, a, 3, b, ca, 1,2,3, b, c ext.}). Однако мой код генерирует несколько типов ошибок mistmaches вокруг линии
{Set{sofar:+l2}}
и
x<-s1
ли кто-нибудь знает, как это исправить?
Для записи слово «переставить», а не «переместить». –