Most data serialization formats, like JSON, YAML, and EDN, feature a similar set of basic building blocks, namely:
- Some primitive values, like numbers, strings, and booleans;
- Key-value pairs, also known as maps, dictionaries, or objects;
- Sequences, usually in the form of lists or arrays, and sometimes also sets.
I completely agree with the fact that those are basic building blocks for data inside any information system. However, as a Haskeller I always miss one additional part of my toolbox: variants. Variants are essentially tagged values which contain further values inside.