sequences sets sets.private vocabs.loader ;
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 )
dup identity-hashcode identity-wrapper boa ; inline
M: identity-wrapper hashcode* nip identity-hashcode>> ; inline
+PRIVATE>
+
TUPLE: identity-hash-set < wrapped-hash-set ;
: <identity-hash-set> ( n -- ihash-set )
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
M: sequence-wrapper hashcode*
underlying>> [ sequence-hashcode ] recursive-hashcode ; inline
+PRIVATE>
+
TUPLE: sequence-hash-set < wrapped-hash-set ;
: <sequence-hash-set> ( n -- shash-set )
<hash-set> sequence-hash-set boa ; inline
-M: sequence-hash-set wrap-key
- drop dup sequence? [ <sequence-wrapper> ] [ not-a-sequence ] if ;
+M: sequence-hash-set wrap-key drop <sequence-wrapper> ;
M: sequence-hash-set clone
underlying>> clone sequence-hash-set boa ; inline
IN: hash-sets.wrapped
-TUPLE: wrapped-key
- { underlying read-only } ;
-
TUPLE: wrapped-hash-set
{ underlying hash-set read-only } ;
parser vocabs.loader ;
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 )
dup identity-hashcode identity-wrapper boa ; inline
M: identity-wrapper hashcode* nip identity-hashcode>> ; inline
+PRIVATE>
+
TUPLE: identity-hashtable < wrapped-hashtable ;
: <identity-hashtable> ( n -- ihashtable )
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
M: sequence-wrapper hashcode*
underlying>> [ sequence-hashcode ] recursive-hashcode ; inline
+PRIVATE>
+
TUPLE: sequence-hashtable < wrapped-hashtable ;
: <sequence-hashtable> ( n -- shashtable )
<hashtable> sequence-hashtable boa ; inline
-M: sequence-hashtable wrap-key
- drop dup sequence? [ <sequence-wrapper> ] [ not-a-sequence ] if ;
+M: sequence-hashtable wrap-key drop <sequence-wrapper> ;
M: sequence-hashtable clone
underlying>> clone sequence-hashtable boa ; inline
vocabs.loader ;
IN: hashtables.wrapped
-TUPLE: wrapped-key
- { underlying read-only } ;
-
TUPLE: wrapped-hashtable
{ underlying hashtable read-only } ;
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
M: number-wrapper hashcode*
nip underlying>> number-hashcode ; inline
+PRIVATE>
+
TUPLE: number-hash-set < wrapped-hash-set ;
: <number-hash-set> ( n -- shash-set )
<hash-set> number-hash-set boa ; inline
-M: number-hash-set wrap-key
- drop dup number? [ <number-wrapper> ] [ not-a-number ] if ;
+M: number-hash-set wrap-key drop <number-wrapper> ;
M: number-hash-set clone
underlying>> clone number-hash-set boa ; inline
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
M: number-wrapper hashcode*
nip underlying>> number-hashcode ; inline
+PRIVATE>
+
TUPLE: number-hashtable < wrapped-hashtable ;
: <number-hashtable> ( n -- shashtable )
<hashtable> number-hashtable boa ; inline
-M: number-hashtable wrap-key
- drop dup number? [ <number-wrapper> ] [ not-a-number ] if ;
+M: number-hashtable wrap-key drop <number-wrapper> ;
M: number-hashtable clone
underlying>> clone number-hashtable boa ; inline