assocs: use assoc-size to short-circuit equality checks.
parent
a23c8a3711
commit
6c2c5c0a82
|
@ -117,7 +117,7 @@ M: assoc assoc-clone-like ( assoc exemplar -- newassoc )
|
||||||
[ at* [ = ] [ 2drop f ] if ] with-assoc assoc-all? ;
|
[ at* [ = ] [ 2drop f ] if ] with-assoc assoc-all? ;
|
||||||
|
|
||||||
: assoc= ( assoc1 assoc2 -- ? )
|
: assoc= ( assoc1 assoc2 -- ? )
|
||||||
[ assoc-subset? ] [ swap assoc-subset? ] 2bi and ;
|
2dup [ assoc-size ] bi@ eq? [ assoc-subset? ] [ 2drop f ] if ;
|
||||||
|
|
||||||
: assoc-hashcode ( n assoc -- code )
|
: assoc-hashcode ( n assoc -- code )
|
||||||
>alist hashcode* ;
|
>alist hashcode* ;
|
||||||
|
|
|
@ -151,10 +151,7 @@ M: hashtable clone
|
||||||
(clone) [ clone ] change-array ; inline
|
(clone) [ clone ] change-array ; inline
|
||||||
|
|
||||||
M: hashtable equal?
|
M: hashtable equal?
|
||||||
over hashtable? [
|
over hashtable? [ assoc= ] [ 2drop f ] if ;
|
||||||
2dup [ assoc-size ] bi@ eq?
|
|
||||||
[ assoc= ] [ 2drop f ] if
|
|
||||||
] [ 2drop f ] if ;
|
|
||||||
|
|
||||||
! Default method
|
! Default method
|
||||||
M: assoc new-assoc drop <hashtable> ; inline
|
M: assoc new-assoc drop <hashtable> ; inline
|
||||||
|
|
Loading…
Reference in New Issue