Core_kernel.Heap和Core_kernel.FHeap有什么区别?

时间:2018-04-11 20:28:24

标签: ocaml ocaml-core

Jane Street的Core_kernel库有两个基于pairing heaps的堆实现:

  

模块Core_kernel.Heap

     

基于配对堆的堆实现。

docs

  

模块Core_kernel.Fheap

     

功能堆(作为配对堆实现)。

docs

从描述中,我不清楚它们之间的区别。我何时会使用其中一个?

1 个答案:

答案 0 :(得分:4)

差异在于你的第二句话中的“功能”一词:Heap是一种必要的实施方式,也可以通过例如add函数:

val add : 'a t ‑> 'a ‑> Core_kernel__.Import.unit

返回unit,并修改现有堆。

另一方面,FHeap是有用的,这意味着诸如add之类的操作将创建新对象,使原始对象完整:在这种情况下,add的签名是

val add : 'a t ‑> 'a ‑> 'a t