Определение неявных границ вида для черт Scala

Я делаю упражнение для реализации функционального бинарного дерева поиска в Scala, следуя аналогичной схеме, которую я видел в Haskell. У меня есть структура, которая выглядит примерно так:

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]()
    ... 
}

Я былюбить поставить ограничение типа наA так что он будет принимать только объекты, которые расширяютсяOrdered, Похоже, мне нужно определить вид, связанный с([A <% Ordered[A]]) наBranch а такжеLeaf, так же хорошо какTreeNode черта .. Я не могу сделать это наTreeNode черта, однако, потому что границы представления не приняты.

Насколько я понимаю,<%границы стиля являются синтаксическим сахаром дляimplicit определение, поэтому должен быть способ написать, чтобы определить границы вручную в пределахTreeNode черта характера. Я не уверен, как я должен это сделать, хотя. Я немного осмотрелся, но не продвинулся дальше, чем что-то вроде неявного определения.

Кто-нибудь может указать мне правильное направление? Я подхожу к этому с неправильной точки зрения полностью?

Ответы на вопрос(3)

Ваш ответ на вопрос