Definición de límites de vista implícitos en los rasgos de Scala

Estoy haciendo un ejercicio para implementar un árbol de búsqueda binario funcional en Scala, siguiendo un patrón similar que he visto usado en Haskell. Tengo una estructura que se parece a esto:

trait TreeNode[A] {
    def isLeaf: Boolean
    def traverse: Seq[A]
    ...
}

case class Branch[A](value: A, left: TreeNode[A], right: TreeNode[A]) extends TreeNode[A] { 
   def isLeaf: Boolean = false
   def traverse: Seq[A] = ...
   ... 
}

case class Leaf[A]() extends TreeNode[A] { 
    def isLeaf: Boolean = true
    def traverse: Seq[A] = Seq[A]()
    ... 
}

Carné de identidadme gusta poner una restricción de tipo enA para que solo acepte objetos que se extiendanOrdered. Parece que necesito definir una vista enlazada en A([A <% Ordered[A]]) enBranch yLeaf, así como elTreeNode rasgo .. no puedo hacer esto en elTreeNode Rasgo, sin embargo, porque los límites de vista no son aceptados.

Según entiendo,<%Los límites de visión de estilo son azúcar sintáctica para unimplicit definición, por lo que debería haber una manera de escribir para definir el límite manualmente dentro delTreeNode rasgo. Aunque no estoy seguro de cómo se supone que debo hacer esto. He mirado alrededor un poco, pero no he llegado mucho más lejos que la necesidad de definir algún tipo de implícito.

¿Alguien puede señalarme en la dirección correcta? ¿Me estoy acercando a esto desde el ángulo equivocado por completo?

Respuestas a la pregunta(3)

Su respuesta a la pregunta