Tipo de restrição para tipo de desigualdade em scala [duplicado]
Duplicata Possível:
Impor a diferença de tipos
Como existe uma restrição de tipo generalizada que aplica a igualdade em scala=:=
, existe um que impõe "não é igual" para tipos? Basicamente!=
mas para tipos?
Editar
Comentário abaixo aponta para uma existenteQ & A e a resposta parece ser que (1) não, não está na biblioteca padrão (2) sim, é possível definir um.
Então, modificarei minha pergunta por causa de um pensamento que me ocorreu depois que vi a resposta.
Dada a solução existente:
sealed class =!=[A,B]
trait LowerPriorityImplicits {
implicit def equal[A]: =!=[A, A] = sys.error("should not be called")
}
object =!= extends LowerPriorityImplicits {
implicit def nequal[A,B](implicit same: A =:= B = null): =!=[A,B] =
if (same != null) sys.error("should not be called explicitly with same type")
else new =!=[A,B]
}
case class Foo[A,B](a: A, b: B)(implicit e: A =!= B)
E seA <: B
ouA >: B
, será ainda assim queA =!= B
? Se não, é possível modificar a solução de tal forma que seA =!= B
então não é o caso queA <: B
ouA >: B
?