encode maps keeping keys in order.
to keep maps in order, we first sort it by keys by transforming them as list. Then we process the keys/values in order.
ex:
2> B = sext:encode(#{ a => 1, b=>1 }).
<<17,1,0,0,0,2,12,176,128,8,10,0,0,0,2,12,177,0,8,10,0,0,
0,2>>
3> B = sext:encode(#{ b => 1, a=>1 }).
<<17,1,0,0,0,2,12,176,128,8,10,0,0,0,2,12,177,0,8,10,0,0,
0,2>>
I noticed that there are no quickcheck tests for maps, so I started adding some. This highlighted that some more implementation is needed – not least prefix encoding.
i can probably add that. Did you already started the work on it?
I started working on it. I got pretty far, but then – after starting a 1M test run of prop_sort(), discovered that the keysort order in maps differs from the normal term ordering: floats are always considered larger than ints.
Needless to say, this poses a significant challenge for sext. I haven't yet figured out how to solve that in a backwards-compatible way (or even breaking compatibility just for map keys).
@benoitc could you check out #31 please?
@uwiger sorry I missed it ... I will later today thanks :)
Actually, we (Thomas Arts and I) have determined that there is still some work needed. I'll try to get back to it as quickly as I can.