我正在自学俄冈崎的纯功能数据结构,现在正在练习3.4,它要求推理并实施一个重量偏向的左派堆.这是我的基本实现:
(* 3.4 (b) *)
functor WeightBiasedLeftistHeap (Element : Ordered) : Heap =
struct
structure Elem = Element
datatype Heap = E | T of int * Elem.T * Heap * Heap
fun size E = 0
| size (T (s, _, _, _)) = s
fun makeT (x, a, b) =
let
val sizet = size a + size b + 1
in
if size a >= size b then T (sizet, x, a, b)
else T …Run Code Online (Sandbox Code Playgroud)