# cycles [][crates-io] [][docs-rs]
**A cyclic pattern abstraction, heavily inspired by [TidalCycles][tidalcycles].**
Started as an attempt at porting the `Pattern` abstraction and related items
from the TidalCycles' Haskell implementation, though some liberties have been
taken in order to achieve a more Rust-esque API.
The goal of this crate is to aim for a similar level of ergonomics to
TidalCycles (it's hard to compete with Haskell!), while taking advantage of
Rust's ability to provide low-to-zero-cost abstractions.
## The [`Pattern`] trait
The essence of this crate is the [`Pattern`] trait. `Pattern`s are types
that can be queried with a [`Span`] to produce a sequence of [`Event`]s. All
other items are related to constructing, applying, modifying or mapping types
implementing `Pattern`.
[crates-io]: https://crates.io/crates/cycles
[docs-rs]: https://docs.rs/cycles/
[tidalcycles]: https://tidalcycles.org/