classes.tuple: switch to python's tuplehash(). Fixes #153.
parent
4ad888b530
commit
195d5834d4
|
@ -350,17 +350,17 @@ M: tuple clone (clone) ; inline
|
||||||
|
|
||||||
M: tuple equal? over tuple? [ tuple= ] [ 2drop f ] if ;
|
M: tuple equal? over tuple? [ tuple= ] [ 2drop f ] if ;
|
||||||
|
|
||||||
GENERIC: tuple-hashcode ( n tuple -- x )
|
: tuple-hashcode ( depth obj -- hash )
|
||||||
|
|
||||||
M: tuple tuple-hashcode
|
|
||||||
[
|
[
|
||||||
[ class hashcode ] [ tuple-size iota ] [ ] tri
|
[ drop 1000003 ] dip
|
||||||
[ rot ] dip [
|
[ class hashcode ] [ tuple-size ] bi
|
||||||
swapd array-nth hashcode* sequence-hashcode-step
|
[ dup fixnum+fast 82520 fixnum+fast ] [ iota ] bi
|
||||||
] 2curry each
|
] 2keep [
|
||||||
] recursive-hashcode ;
|
swapd array-nth hashcode* rot fixnum-bitxor
|
||||||
|
pick fixnum*fast [ [ fixnum+fast ] keep ] dip swap
|
||||||
|
] 2curry each drop nip 97531 fixnum+fast ; inline
|
||||||
|
|
||||||
M: tuple hashcode* tuple-hashcode ;
|
M: tuple hashcode* [ tuple-hashcode ] recursive-hashcode ;
|
||||||
|
|
||||||
M: tuple-class new
|
M: tuple-class new
|
||||||
dup "prototype" word-prop [ (clone) ] [ tuple-layout <tuple> ] ?if ;
|
dup "prototype" word-prop [ (clone) ] [ tuple-layout <tuple> ] ?if ;
|
||||||
|
|
Loading…
Reference in New Issue