--- --- TODO: - consider a lead byte value used to wrap an encoded `Value` in a size-counted wrapper? That way parsers can quickly skip nested structure they're not interested in... - https://github.com/uwiger/sext - http://erlang.org/doc/reference_manual/expressions.html#term-comparisons; in particular, see the non-lexicographic ordering on tuples (vs lists). - should there be a built-in (i.e. recommended) reference type for external data?? - if there were, it'd give IPLD-like characteristics to the thing from the get-go - IRIs and mime-typed things are already in there so why not content-based addressing - Check out https://hitchdev.com/strictyaml/, in particular the "Why StrictYAML?" and "Design justifications" sections; perhaps borrow elements of that structure for writing a comparison of Preserves with other things It is becoming VERY CLEAR that on-the-wire efficiency is... a secondary concern. Perhaps revise the binary syntax to be less terse and better for simple encoding and for term ordering, canonicalization, quick indexing, etc. - the indexing thing clashes with the term ordering thing - maybe put the indexes at the end?? they could be optional It might be nice to define some kind of jsonpath/xpath-like means of naming a subterm within a Preserve. Record labels would be a kind of assertion on the current node. Indexes and keys would be steps. It'd be a lot like xpath I think; see also my `racket-xe` package. - `` - moves into direct children - `` - moves into direct and indirect children, including this node - `` - moves into direct and indirect children, excluding this node - `` - "where" clause, applies nested path, keeping nodes with submatches - `` - result of first non-empty `P` match - `` - moves into direct children whose keys are `K` from dictionaries, sequences or records; `K` should be a number for the latter two - `