Skip to content

Instantly share code, notes, and snippets.

@bradleyd
Created September 20, 2016 16:08
Show Gist options
  • Save bradleyd/44cfb15b50baec5397ef4ec8c5395282 to your computer and use it in GitHub Desktop.
Save bradleyd/44cfb15b50baec5397ef4ec8c5395282 to your computer and use it in GitHub Desktop.
gb_trees
iex(15)> tree = :gb_trees.empty
{0, nil}
iex(16)> tree2 = :gb_trees.insert("/info", [%{remote: :"boo@localhost", counter: 1}], tree)
{1, {"/info", [%{counter: 1, remote: :boo@localhost}], nil, nil}}
iex(17)> tree3 = :gb_trees.update("/info", [:gb_trees.get("/info", tree2) |%{remote: :"bar@localhost", counter: 0}], tree2)
{1,
{"/info",
[[%{counter: 1, remote: :boo@localhost}] |
%{counter: 0, remote: :bar@localhost}], nil, nil}}
iex(18)> :gb_trees.get("/info", tree3) [[%{counter: 1, remote: :boo@localhost}] |
%{counter: 0, remote: :bar@localhost}]
iex(19)> tree3 = :gb_trees.update("/info", [%{remote: :"bar@localhost", counter: 0} | :gb_trees.get("/info", tree2)], tree2)
{1,
{"/info",
[%{counter: 0, remote: :bar@localhost},
%{counter: 1, remote: :boo@localhost}], nil, nil}}
iex(20)> :gb_trees.get("/info", tree3) [%{counter: 0, remote: :bar@localhost}, %{counter: 1, remote: :boo@localhost}]
iex(21)> :gb_trees.balance
balance/1
iex(21)> :gb_trees.balance
balance/1
iex(21)> :gb_trees.balance(tree3)
{1,
{"/info",
[%{counter: 0, remote: :bar@localhost},
%{counter: 1, remote: :boo@localhost}], nil, nil}}
iex(22)> :gb_trees.get("/info", tree3)
[%{counter: 0, remote: :bar@localhost}, %{counter: 1, remote: :boo@localhost}]
iex(23)> :gb_trees.largest(tree3) {"/info",
[%{counter: 0, remote: :bar@localhost}, %{counter: 1, remote: :boo@localhost}]}
iex(24)> :gb_trees.
balance/1 delete/2 delete_any/2 empty/0
enter/3 from_orddict/1 get/2 insert/3
is_defined/2 is_empty/1 iterator/1 iterator_from/2
keys/1 largest/1 lookup/2 map/2
module_info/0 module_info/1 next/1 size/1
smallest/1 take_largest/1 take_smallest/1 to_list/1
update/3 values/1
iex(24)> :gb_trees.
balance/1 delete/2 delete_any/2 empty/0
enter/3 from_orddict/1 get/2 insert/3
is_defined/2 is_empty/1 iterator/1 iterator_from/2
keys/1 largest/1 lookup/2 map/2
module_info/0 module_info/1 next/1 size/1
smallest/1 take_largest/1 take_smallest/1 to_list/1
update/3 values/1
iex(24)> :gb_trees.smallest tree3
{"/info",
[%{counter: 0, remote: :bar@localhost}, %{counter: 1, remote: :boo@localhost}]}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment