<p dir="ltr">Well, this proposal is not for check equality. Its purpose is to compare two object that which object is `greater`.</p>
<p dir="ltr">I'm sure this feature is already implemented for every modern js engines, as it's needed to implement Map/Set. But we don't have js interface for it yet. Thus proposal is to expose this functionality to userland application.</p>
<div class="gmail_extra"><br><div class="gmail_quote">2016. 9. 19. 오후 2:26에 "Jordan Harband" <<a href="mailto:ljharb@gmail.com">ljharb@gmail.com</a>>님이 작성:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">This may have already been proposed as <a href="https://github.com/sebmarkbage/ecmascript-shallow-equal" target="_blank">https://github.com/<wbr>sebmarkbage/ecmascript-<wbr>shallow-equal</a> - if so, you'll want to post your comments there.</div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Sep 18, 2016 at 10:10 PM, Park Hyeonu <span dir="ltr"><<a href="mailto:nemo1275@gmail.com" target="_blank">nemo1275@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">tl;dr - deterministic function that compares arbitrary objects</p>
<p dir="ltr">I know now we have `Map` and `Set`, but sometimes we need more low level ones. Especially for library developers.</p>
<p dir="ltr">For the case, say, I want to implement a map whose key can be a arbitrary number of objects. Currently this can only implemented as nested map whose structure is `keylen -> key1 -> key2 -> ... -> value`. Not really elegant. But if we have `Object.compare()`, `(key1, key2, ...) -> value` is possible.</p>
<p dir="ltr">As its intended purpose is to be used with custom map/set, I don't think we should define how this function works in spec. Just guaranteed to be deterministic in each runtime is enough.</p>
<p dir="ltr">For detail, this function follows `(left: any, right: any) => number` form. When `Object.is(left, right)` is true, `Object.compare(left, right)` must return `0`. Otherwise, the result must be deterministic, means whenever(in same runtime) we call this function with same arguments it should return same value(or at least, always greater than/lesser 0).</p>
<p dir="ltr">Seems good?</p>
<br>______________________________<wbr>_________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listi<wbr>nfo/es-discuss</a><br>
<br></blockquote></div><br></div>
</blockquote></div></div>