Core_kernel.Heap 和 Core_kernel.FHeap 有什么区别?
What is the difference between Core_kernel.Heap and Core_kernel.FHeap?
Jane Street 的 Core_kernel 库有两个基于 pairing heaps 的堆实现:
Module Core_kernel.Heap
Heap implementation based on a pairing-heap.
(docs)
Module Core_kernel.Fheap
Functional heaps (implemented as pairing heaps).
(docs)
根据描述,我不清楚它们之间有什么区别。我什么时候使用其中之一?
不同之处在于第二个引用中的 "Functional" 一词: Heap
是一个命令式实现,也可以通过例如的签名看出。 add
函数:
val add : 'a t ‑> 'a ‑> Core_kernel__.Import.unit
其中 returns unit
,并修改现有堆。
另一方面,FHeap
是函数式的,这意味着像 add 这样的操作会创建新的对象,并保持原来的不变:在这种情况下,add 的签名是
val add : 'a t ‑> 'a ‑> 'a t
Jane Street 的 Core_kernel 库有两个基于 pairing heaps 的堆实现:
Module Core_kernel.Heap
Heap implementation based on a pairing-heap.
(docs)
Module Core_kernel.Fheap
Functional heaps (implemented as pairing heaps).
(docs)
根据描述,我不清楚它们之间有什么区别。我什么时候使用其中之一?
不同之处在于第二个引用中的 "Functional" 一词: Heap
是一个命令式实现,也可以通过例如的签名看出。 add
函数:
val add : 'a t ‑> 'a ‑> Core_kernel__.Import.unit
其中 returns unit
,并修改现有堆。
另一方面,FHeap
是函数式的,这意味着像 add 这样的操作会创建新的对象,并保持原来的不变:在这种情况下,add 的签名是
val add : 'a t ‑> 'a ‑> 'a t