egg_recursive 0.2.0

A recursive interface for egg: e-graphs good without S-expresion!
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# `egg_recursive` - Recursive interface for [`egg`][egg]

This crate provides a recursive interface to `egg`.
`egg` alrady comes with S-expression-based interface, but it has the following drawbacks:

- It uses `FromStr` and `Display` to parse/format textual representation of ASTs.
  + These CAN be used for other purposes and this can cause a conflict with other applications.
- Parser favours the first clause for terminal variants with the same parameter.
  + This can result in unexpected behaviour under the existence of ambiguity.
- ALL textual representation of ASTs fed to `egg::rewrite` is checked at RUNTIME.
  + This means we can't see syntax error until compilation;
  + This further complicates the debugging process.
- S-expressions get harder and harder to be parsed by human eyes

This crate alleviates these problems by introducing a recursive interface to [`egg`][egg].

[egg]: https://egraphs-good.github.io/