
On 16.12.2014 09:39, Tobias Dammers wrote:
On Mon, Dec 15, 2014 at 11:01:12PM +0100, Wojtek Narczyński wrote:
On 15.12.2014 20:32, Tobias Dammers wrote:
Anyway, one thing I'm running up against is that I am going to need ordered key/value collections, which I believe is something JSON does not support out-of-the-box: "objects" ({"foo":15, "bar":23}) are conceptually unordered key/value collections (and Aeson treats them as such, using hash maps as the intermediate storage format), so I lose ordering; JSON does not forbid ordering of maps by key, I believe. But you'd need to create an OrderedMap and patch aeson. It would be very useful, the mixing of key order is nuisance for human JSON consumers. No, that's not what I meant. By "ordered", I meant that the in-memory representation of the document should maintain file order. Aeson uses a HashMap to store key/value objects, which is an unordered container; what you suggest would be something like Map (storing elements by key order), but what I'm talking about is more like [(Key, Value)], i.e., keeping file order intact.
I meant a container maintaining order of additions. Indeed, it's not an OrderedMap, rather InOrderOfArrivalMap.
I absolutely don't want to use "looks like JSON but isn't", I really want to stick with standard JSON, for so many reasons.
As long as the keys are unique, it is JSON, order of keys does not matter. Caveat emptor.