<div align="center">
# ExprZ
[](https://github.com/qdeduction/exprz/actions)
[](https://crates.io/crates/exprz)
_An Expression Library_
</div>
## About
_ExprZ_ is an expression representation and parsing library. _ExprZ_ expressions are typed s-expressions formed from atoms or groups of expressions and represent enumerated types of the form
```rust
enum Expr<A> {
Atom(A),
Group(Vec<Self>),
}
```
_ExprZ_ generalizes this `enum` by defining an `Expression` trait which encompasses the algebraic properties of the above `enum` but which affords the user the flexibility of a more efficient implementation.
_ExprZ_ comes with default implementations of `Expression` which use the Rust `std` library. To access these implementations use the `std` feature on the crate.
### Rust Nightly
The most recent version of _ExprZ_ uses the Rust nightly compiler toolchain which is necessary for defining the main `Expression` trait. In the future we hope to remove this requirement as the `Expression` API becomes more refined over time or once the standard compiler toolchain catches up.
## Getting Started
For more information on how to use _ExprZ_, see the [documentation](https://docs.rs/exprz).
## License
This project is licensed under the [ISC License](https://opensource.org/licenses/ISC). See [LICENSE](LICENSE) for more information.
---
<div align="center">
[](https://github.com/bhgomes)
[](LICENSE)
[](https://github.com/qdeduction/exprz)
</div>