lexpr 0.2.2

A representation for Lisp data
Documentation
# Missing features

- [ ] Comments (both line and R6RS multi-line comments)
- [X] Proper string escape syntax, instead of using JSON's rules
- [X] Serde support
- [ ] Syntactic sugar for quote, quasiquote, unquote and unquote-splicing
- [X] Support for characters
- [X] Support for vectors
- [X] Support for byte vectors
- [ ] Pretty-printing

## The `sexp` Macro

- [ ] Quote syntactic sugar
- [ ] Unquote-splicing
- [ ] Improve error reporting

## Lisp dialects

- [ ] Scheme (R6RS, R7RS, Guile/Racket extensions)
- [ ] Emacs Lisp
- [ ] Common Lisp

## Numbers

- [ ] Complete support for number syntax (e.g., different bases)
- [ ] Scheme numeric tower (complex numbers, rationals, bignums)
- [ ] NaNs and infinities (fixup `from` implementations vs. `from_f64`)

## Architectural considerations

- [ ] Split off the low-level part of the parser into its own module
  (or even crate), using an event-based API. This should allow for
  efficient implementation of the Serde deserializer. See
  [`yaml_rust::parser::Parser`] for an example and [`serde_yaml`] for
  an example of how that might look like. A reason for splitting this
  functionality into its own crate might be that the functionality can
  the re-used for, say, a Lisp implementation which does not use
  `lexpr::Value` as data representation, and hence does not need all
  the related code in `lexpr`. The same reasoning might apply to the
  printing API.

  It might be a good idea to code some benchmarks before doing the
  restructuring to ensure it doesn't affect performance too much --
  let's put that "zero-cost abstractions" concept to the test!

  [`yaml_rust::parser::Parser`]: https://docs.rs/yaml-rust/*/yaml_rust/parser/struct.Parser.html
  [`serde_yaml`]: https://github.com/dtolnay/serde-yaml/blob/master/src/de.rs