Skip to content

Instantly share code, notes, and snippets.

@jackfoxy
Created November 2, 2012 22:04
Show Gist options
  • Save jackfoxy/4004621 to your computer and use it in GitHub Desktop.
Save jackfoxy/4004621 to your computer and use it in GitHub Desktop.
fold over a BinomialHeap
static member private foldHeap nodeF leafV (h : list<BinomialTree<'a>>) =
let rec loop (h : list<BinomialTree<'a>>) cont =
match h with
| Node(_, a, h')::tl -> loop h' (fun lacc ->
loop tl (fun racc ->
cont (nodeF a lacc racc)))
| _ -> cont leafV
loop h (fun x -> x)
static member private inOrder (h : list<BinomialTree<'a>>) = (BinomialHeap.foldHeap (fun x l r acc -> l (x :: (r acc))) (fun acc -> acc) h) []
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment