Professor não estou a conseguir a fazer o union, não me deixa fazer a comparação x > y e x < y. Porque razão? A lógica por mim parece a correcta, pode ajudar-me pf? Obrigado!
def union[T](f:Set[T], s:Set[T]) : Set[T] =
(f,s) match {
case (Nil,_) => s
case (_,Nil) => f
case (x::xs, y::ys) =>
if (x > y) y::union(x::xs, ys)
else if (x < y) x::union(xs, y::ys)
else x::union(xs, y::ys)
}
Você está a assumir que está a trabalhar com listas ordenadas e que o tipo T tem disponível a operação "<". Para isso ser possível, seria necessário introduzir uma restrição sobre o tipo T.
Contudo o enunciado diz explicitamente que as listas não são ordenadas e alguns dos exemplos até apresentam listas não ordenadas. A solução pretendida é mais simples do que a sua (embora não tão eficiente).