Packages

A library to help with doing pairwise or elementwise operations on collections.

Current section

Files

Jump to
zip README.md
Raw

README.md

# Zip 🀐
A simple library to enable elementwise operations on collections. Use it like this:
```elixir
Zip.add([1], [1]) # => [2]
Zip.multiply([1], [1]) # => [1]
Zip.subtract([1], [1]) # => [0]
Zip.divide([10], [2]) # => [5]
Zip.apply([5], [2], Integer, :mod) # => [1]
Zip.apply([[1, 2], [3, 4]], [7, 7], Enum, :intersperse) #=> [[1, 7, 2], [3, 7, 4]]
Zip.apply([[1, 2, 3, 4], [1, 2, 3, 4]], [2, 3], Enum, :map_every, [fn x -> x * 10 end]) # => [[10, 2, 30, 4], [10, 2, 3, 40]]
```
### Roadmap
1. Enable arbitrary operations - either user defined or callbacks?
2. Enable a wider range of elements in the list - support decimal, e.g.
3. Probably part of 2 - ensure elementwise pairs are of the same type. Do we need to? As long as the function accepts them fine
4. Stream dat data
5. Mad speed gainz?
6. Zip nth? Or interleave / intersperse type functions.
## Installation
[Available in Hex](https://hex.pm/docs/publish), install by adding `zip` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:zip, "~> 0.1.1"}
]
end
```
Docs can be found here: [https://hexdocs.pm/zip](https://hexdocs.pm/zip) πŸ‘©β€βš•οΈ πŸ‘©β€βš•οΈ