![The Tatra Range](./tatra.jpg)
[![Build Status](https://travis-ci.org/Dzol/berg.svg?branch=master)](https://travis-ci.org/Dzol/berg)
# Berg
[Berg](http://dzol.github.io/berg) is a Minimum [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) for Integers in Elixir.
The underlying library is a Two Pass [Pairing Heap](https://en.wikipedia.org/wiki/Pairing_heap) in Erlang.
## What is it?
The interface is akin to a [Priority Queue](https://en.wikipedia.org/wiki/Priority_queue).
You might be familiar with the Heap from algorithms such as **Heap-Sort**, **Dijkstra's**, or **Prim's**.
## Rationale
This is a program w/ which to learn sequential Erlang + how to build an Elixir library around it.
It's a fairly complex Erlang program (involving modules, functions, lists, and tuples) but its domain isn't complicated.
The project has OTP Application structure, documentation, Dialyzer declarations, and a test suite (`mix test`).
A **property** suite is written in Elixir (`mix property`).