readme.md
# difflist
> [Difference lists](https://en.wikipedia.org/wiki/Difference_list) in Elixir
## Install
In your `mix.exs`:
```elixir
defp deps do
[
{:difflist, "~> 1.0.0"}
]
end
```
Then run `mix deps.get`.
## Usage
The best place to read the documentation is in [HexDocs](https://hexdocs.pm/difflist/) or in `iex` (e.g. `h DiffList.from_list`).
This package exposes a `DiffList` module with the following functions:
### Creating difference lists
#### `DiffList.from_list/1`
Creates a difference list from a regular list.
#### `DiffList.empty/0`
Creates an empty difference list.
#### `DiffList.singleton/1`
Creates a difference list of one element.
### Using difference lists
#### `DiffList.append/2`
Appends a difference list to another difference list.
#### `DiffList.cons/2`
Prepends an item to a difference list.
#### `DiffList.snoc/2`
Appends an item to a difference list.
#### `DiffList.head/1`
Gets the first item of a difference list.
#### `DiffList.tail/1`
Gets the tail (a difference list of everything but the first item) of a difference list.
#### `DiffList.concat/1`
Concatenates a list of difference lists into one difference list.
## Benchmark
A simple left-associated append benchmark is included. Run `mix bench` to run it.
## License
MIT © [Juan Soto](https://juansoto.me)