[e-lang] [Caja] Equality of mappings in E
David-Sarah Hopwood
david.hopwood at industrial-designers.co.uk
Thu Mar 12 13:31:06 EDT 2009
Kevin Reid wrote:
> On Mar 11, 2009, at 22:15, Bill Frantz wrote:
[...]
>>>>> Mark S. Miller wrote:
>>>>>> ? ["a" => 1, "b" => 2] == ["b" => 2, "a" => 1]
>>>>>> # value: false
[...]
>> It would seem that you could canonicalize the order for any ordered
>> type, including string. The process might have an execution time cost.
>
> Yes; the problem is that key-type is not an explicit property of
> ConstMaps, and it would be rather surprising, if not actively
> hazardous, to have the behavior "a ConstMap's keys are sorted if the
> keys all have op__cmp methods", especially as "are these objects all
> of the same type?" is -- nontrivial -- in E.
I agree. The approach of having separate sorted and unsorted map
"classes" (with the same interface) doesn't have this problem.
> If you want a "sorted map literal" or to reestablish sortedness you
> can always write:
>
> ? ["b" => 2, "a" => 1].sortKeys()
> # value: ["a" => 1, "b" => 2]
That's not really providing the same functionality as a sorted map,
since sorting is at best O(n log n) (for a comparison sort), whereas
inserting an item into a balanced tree structure, maintaining sortedness,
is typically O(log n).
--
David-Sarah Hopwood ⚥
More information about the e-lang
mailing list