hash-sets/hashtables: remove wrapped-key, use slot-types for errors.
parent
1eff2b3dbc
commit
d78972e045
|
@ -4,7 +4,10 @@ USING: accessors hash-sets hash-sets.wrapped kernel parser
|
||||||
sequences sets sets.private vocabs.loader ;
|
sequences sets sets.private vocabs.loader ;
|
||||||
IN: hash-sets.identity
|
IN: hash-sets.identity
|
||||||
|
|
||||||
TUPLE: identity-wrapper < wrapped-key identity-hashcode ;
|
<PRIVATE
|
||||||
|
|
||||||
|
TUPLE: identity-wrapper
|
||||||
|
{ underlying read-only } identity-hashcode ;
|
||||||
|
|
||||||
: <identity-wrapper> ( wrapped-key -- identity-wrapper )
|
: <identity-wrapper> ( wrapped-key -- identity-wrapper )
|
||||||
dup identity-hashcode identity-wrapper boa ; inline
|
dup identity-hashcode identity-wrapper boa ; inline
|
||||||
|
@ -16,6 +19,8 @@ M: identity-wrapper equal?
|
||||||
|
|
||||||
M: identity-wrapper hashcode* nip identity-hashcode>> ; inline
|
M: identity-wrapper hashcode* nip identity-hashcode>> ; inline
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
TUPLE: identity-hash-set < wrapped-hash-set ;
|
TUPLE: identity-hash-set < wrapped-hash-set ;
|
||||||
|
|
||||||
: <identity-hash-set> ( n -- ihash-set )
|
: <identity-hash-set> ( n -- ihash-set )
|
||||||
|
|
|
@ -6,9 +6,10 @@ parser sequences sets vocabs.loader ;
|
||||||
|
|
||||||
IN: hash-sets.sequences
|
IN: hash-sets.sequences
|
||||||
|
|
||||||
ERROR: not-a-sequence object ;
|
<PRIVATE
|
||||||
|
|
||||||
TUPLE: sequence-wrapper < wrapped-key ;
|
TUPLE: sequence-wrapper
|
||||||
|
{ underlying sequence read-only } ;
|
||||||
|
|
||||||
C: <sequence-wrapper> sequence-wrapper
|
C: <sequence-wrapper> sequence-wrapper
|
||||||
|
|
||||||
|
@ -20,13 +21,14 @@ M: sequence-wrapper equal?
|
||||||
M: sequence-wrapper hashcode*
|
M: sequence-wrapper hashcode*
|
||||||
underlying>> [ sequence-hashcode ] recursive-hashcode ; inline
|
underlying>> [ sequence-hashcode ] recursive-hashcode ; inline
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
TUPLE: sequence-hash-set < wrapped-hash-set ;
|
TUPLE: sequence-hash-set < wrapped-hash-set ;
|
||||||
|
|
||||||
: <sequence-hash-set> ( n -- shash-set )
|
: <sequence-hash-set> ( n -- shash-set )
|
||||||
<hash-set> sequence-hash-set boa ; inline
|
<hash-set> sequence-hash-set boa ; inline
|
||||||
|
|
||||||
M: sequence-hash-set wrap-key
|
M: sequence-hash-set wrap-key drop <sequence-wrapper> ;
|
||||||
drop dup sequence? [ <sequence-wrapper> ] [ not-a-sequence ] if ;
|
|
||||||
|
|
||||||
M: sequence-hash-set clone
|
M: sequence-hash-set clone
|
||||||
underlying>> clone sequence-hash-set boa ; inline
|
underlying>> clone sequence-hash-set boa ; inline
|
||||||
|
|
|
@ -6,9 +6,6 @@ vocabs.loader ;
|
||||||
|
|
||||||
IN: hash-sets.wrapped
|
IN: hash-sets.wrapped
|
||||||
|
|
||||||
TUPLE: wrapped-key
|
|
||||||
{ underlying read-only } ;
|
|
||||||
|
|
||||||
TUPLE: wrapped-hash-set
|
TUPLE: wrapped-hash-set
|
||||||
{ underlying hash-set read-only } ;
|
{ underlying hash-set read-only } ;
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,10 @@ USING: accessors assocs hashtables hashtables.wrapped kernel
|
||||||
parser vocabs.loader ;
|
parser vocabs.loader ;
|
||||||
IN: hashtables.identity
|
IN: hashtables.identity
|
||||||
|
|
||||||
TUPLE: identity-wrapper < wrapped-key identity-hashcode ;
|
<PRIVATE
|
||||||
|
|
||||||
|
TUPLE: identity-wrapper
|
||||||
|
{ underlying read-only } identity-hashcode ;
|
||||||
|
|
||||||
: <identity-wrapper> ( wrapped-key -- identity-wrapper )
|
: <identity-wrapper> ( wrapped-key -- identity-wrapper )
|
||||||
dup identity-hashcode identity-wrapper boa ; inline
|
dup identity-hashcode identity-wrapper boa ; inline
|
||||||
|
@ -15,6 +18,8 @@ M: identity-wrapper equal?
|
||||||
|
|
||||||
M: identity-wrapper hashcode* nip identity-hashcode>> ; inline
|
M: identity-wrapper hashcode* nip identity-hashcode>> ; inline
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
TUPLE: identity-hashtable < wrapped-hashtable ;
|
TUPLE: identity-hashtable < wrapped-hashtable ;
|
||||||
|
|
||||||
: <identity-hashtable> ( n -- ihashtable )
|
: <identity-hashtable> ( n -- ihashtable )
|
||||||
|
|
|
@ -6,9 +6,10 @@ hashtables.wrapped kernel parser sequences vocabs.loader ;
|
||||||
|
|
||||||
IN: hashtables.sequences
|
IN: hashtables.sequences
|
||||||
|
|
||||||
ERROR: not-a-sequence object ;
|
<PRIVATE
|
||||||
|
|
||||||
TUPLE: sequence-wrapper < wrapped-key ;
|
TUPLE: sequence-wrapper
|
||||||
|
{ underlying sequence read-only } ;
|
||||||
|
|
||||||
C: <sequence-wrapper> sequence-wrapper
|
C: <sequence-wrapper> sequence-wrapper
|
||||||
|
|
||||||
|
@ -20,13 +21,14 @@ M: sequence-wrapper equal?
|
||||||
M: sequence-wrapper hashcode*
|
M: sequence-wrapper hashcode*
|
||||||
underlying>> [ sequence-hashcode ] recursive-hashcode ; inline
|
underlying>> [ sequence-hashcode ] recursive-hashcode ; inline
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
TUPLE: sequence-hashtable < wrapped-hashtable ;
|
TUPLE: sequence-hashtable < wrapped-hashtable ;
|
||||||
|
|
||||||
: <sequence-hashtable> ( n -- shashtable )
|
: <sequence-hashtable> ( n -- shashtable )
|
||||||
<hashtable> sequence-hashtable boa ; inline
|
<hashtable> sequence-hashtable boa ; inline
|
||||||
|
|
||||||
M: sequence-hashtable wrap-key
|
M: sequence-hashtable wrap-key drop <sequence-wrapper> ;
|
||||||
drop dup sequence? [ <sequence-wrapper> ] [ not-a-sequence ] if ;
|
|
||||||
|
|
||||||
M: sequence-hashtable clone
|
M: sequence-hashtable clone
|
||||||
underlying>> clone sequence-hashtable boa ; inline
|
underlying>> clone sequence-hashtable boa ; inline
|
||||||
|
|
|
@ -5,9 +5,6 @@ USING: accessors arrays assocs hashtables kernel sequences
|
||||||
vocabs.loader ;
|
vocabs.loader ;
|
||||||
IN: hashtables.wrapped
|
IN: hashtables.wrapped
|
||||||
|
|
||||||
TUPLE: wrapped-key
|
|
||||||
{ underlying read-only } ;
|
|
||||||
|
|
||||||
TUPLE: wrapped-hashtable
|
TUPLE: wrapped-hashtable
|
||||||
{ underlying hashtable read-only } ;
|
{ underlying hashtable read-only } ;
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,10 @@ math.hashcodes parser sequences vocabs.loader ;
|
||||||
|
|
||||||
IN: hash-sets.numbers
|
IN: hash-sets.numbers
|
||||||
|
|
||||||
ERROR: not-a-number object ;
|
<PRIVATE
|
||||||
|
|
||||||
TUPLE: number-wrapper < wrapped-key ;
|
TUPLE: number-wrapper
|
||||||
|
{ underlying number read-only } ;
|
||||||
|
|
||||||
C: <number-wrapper> number-wrapper
|
C: <number-wrapper> number-wrapper
|
||||||
|
|
||||||
|
@ -20,13 +21,14 @@ M: number-wrapper equal?
|
||||||
M: number-wrapper hashcode*
|
M: number-wrapper hashcode*
|
||||||
nip underlying>> number-hashcode ; inline
|
nip underlying>> number-hashcode ; inline
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
TUPLE: number-hash-set < wrapped-hash-set ;
|
TUPLE: number-hash-set < wrapped-hash-set ;
|
||||||
|
|
||||||
: <number-hash-set> ( n -- shash-set )
|
: <number-hash-set> ( n -- shash-set )
|
||||||
<hash-set> number-hash-set boa ; inline
|
<hash-set> number-hash-set boa ; inline
|
||||||
|
|
||||||
M: number-hash-set wrap-key
|
M: number-hash-set wrap-key drop <number-wrapper> ;
|
||||||
drop dup number? [ <number-wrapper> ] [ not-a-number ] if ;
|
|
||||||
|
|
||||||
M: number-hash-set clone
|
M: number-hash-set clone
|
||||||
underlying>> clone number-hash-set boa ; inline
|
underlying>> clone number-hash-set boa ; inline
|
||||||
|
|
|
@ -7,9 +7,10 @@ vocabs.loader ;
|
||||||
|
|
||||||
IN: hashtables.numbers
|
IN: hashtables.numbers
|
||||||
|
|
||||||
ERROR: not-a-number object ;
|
<PRIVATE
|
||||||
|
|
||||||
TUPLE: number-wrapper < wrapped-key ;
|
TUPLE: number-wrapper
|
||||||
|
{ underlying number read-only } ;
|
||||||
|
|
||||||
C: <number-wrapper> number-wrapper
|
C: <number-wrapper> number-wrapper
|
||||||
|
|
||||||
|
@ -21,13 +22,14 @@ M: number-wrapper equal?
|
||||||
M: number-wrapper hashcode*
|
M: number-wrapper hashcode*
|
||||||
nip underlying>> number-hashcode ; inline
|
nip underlying>> number-hashcode ; inline
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
TUPLE: number-hashtable < wrapped-hashtable ;
|
TUPLE: number-hashtable < wrapped-hashtable ;
|
||||||
|
|
||||||
: <number-hashtable> ( n -- shashtable )
|
: <number-hashtable> ( n -- shashtable )
|
||||||
<hashtable> number-hashtable boa ; inline
|
<hashtable> number-hashtable boa ; inline
|
||||||
|
|
||||||
M: number-hashtable wrap-key
|
M: number-hashtable wrap-key drop <number-wrapper> ;
|
||||||
drop dup number? [ <number-wrapper> ] [ not-a-number ] if ;
|
|
||||||
|
|
||||||
M: number-hashtable clone
|
M: number-hashtable clone
|
||||||
underlying>> clone number-hashtable boa ; inline
|
underlying>> clone number-hashtable boa ; inline
|
||||||
|
|
Loading…
Reference in New Issue