This makes handling Value very slightly more work, but it provides useful metadata that can be used to perform better conversion and serialization. The motivation behind the "scalar" type is that in general, only scalars can be coerced to other types. For example, a scalar `null` and a string `> null` have the same in-memory representation. If they are treated identically, this precludes unambiguously converting an optional string whose contents are "null". With the two disambiguated, we can choose to convert `null` to the null object and `> null` to a string of contents "null". This ambiguity does not necessary exist for the standard boolean values `true` and `false`, but it does allow the conversion to be more strict, and it will theoretically result in documents that read more naturally. The motivation behind exposing flow_list and flow_map is that it will allow preserving document formatting round trip (well, this isn't strictly true: single line explicit strings neither remember whether they were line strings or space strings, and they don't remember if they were indented. However, that is much less information to lose). The following formulations will parse to the same indistinguishable value: key: > value key: > value key: | value key: | value I think that's okay. It's a lot easier to chose a canonical form for this case than it is for a map/list without any hints regarding its origin.
Description
LORE
Languages
Zig
100%