scalaz 尝试使用 Heap ,如何覆盖折叠功能

scalaz trying to use Heap , how to override fold function

我有一个案例 class:case class Item(id: Long, rank: Int) 我想创建一堆 Item 对象。我尝试创建 Heap[Item] 的实例,但我必须重写折叠函数,我不知道该怎么做,因此我被困在了这一点上

val heap = new Heap[Item] {
      override def fold[B](empty: => B, nonempty: (Int, (Item, Item) => Boolean, Tree[Ranked[Item]]) => B): B = {

      }
    }

我需要做什么才能使这项工作正常进行,以便我可以使用堆集合; 谢谢

你不应该直接调用 new Heap 开始。

首先,为您的 Item 定义一个隐含的 Order。例如按等级排序:

import scalaz._, Scalaz._

case class Item(id: Long, rank: Int)
object Item {
  implicit val order: Order[Item] = Order.orderBy(_.rank)
}

然后使用 Heap 伴生对象的辅助方法创建 Heaps:

Heap.Empty[Item]
Heap.singleton(Item(1L, 1))
Heap.fromData(List(Item(10L, 3), Item(20L, 2), Item(30L, 1)))