hashtables/hash-sets: add some error checking...

...to the sequence/number wrapped versions.
modern-harvey2
John Benediktsson 2017-07-05 18:41:45 -07:00
parent 46d4b33349
commit 1eff2b3dbc
4 changed files with 16 additions and 4 deletions

View File

@ -6,6 +6,8 @@ parser sequences sets vocabs.loader ;
IN: hash-sets.sequences
ERROR: not-a-sequence object ;
TUPLE: sequence-wrapper < wrapped-key ;
C: <sequence-wrapper> sequence-wrapper
@ -23,7 +25,8 @@ 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 <sequence-wrapper> ;
M: sequence-hash-set wrap-key
drop dup sequence? [ <sequence-wrapper> ] [ not-a-sequence ] if ;
M: sequence-hash-set clone
underlying>> clone sequence-hash-set boa ; inline

View File

@ -6,6 +6,8 @@ hashtables.wrapped kernel parser sequences vocabs.loader ;
IN: hashtables.sequences
ERROR: not-a-sequence object ;
TUPLE: sequence-wrapper < wrapped-key ;
C: <sequence-wrapper> sequence-wrapper
@ -23,7 +25,8 @@ TUPLE: sequence-hashtable < wrapped-hashtable ;
: <sequence-hashtable> ( n -- shashtable )
<hashtable> sequence-hashtable boa ; inline
M: sequence-hashtable wrap-key drop <sequence-wrapper> ;
M: sequence-hashtable wrap-key
drop dup sequence? [ <sequence-wrapper> ] [ not-a-sequence ] if ;
M: sequence-hashtable clone
underlying>> clone sequence-hashtable boa ; inline

View File

@ -6,6 +6,8 @@ math.hashcodes parser sequences vocabs.loader ;
IN: hash-sets.numbers
ERROR: not-a-number object ;
TUPLE: number-wrapper < wrapped-key ;
C: <number-wrapper> number-wrapper
@ -23,7 +25,8 @@ 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 <number-wrapper> ;
M: number-hash-set wrap-key
drop dup number? [ <number-wrapper> ] [ not-a-number ] if ;
M: number-hash-set clone
underlying>> clone number-hash-set boa ; inline

View File

@ -7,6 +7,8 @@ vocabs.loader ;
IN: hashtables.numbers
ERROR: not-a-number object ;
TUPLE: number-wrapper < wrapped-key ;
C: <number-wrapper> number-wrapper
@ -24,7 +26,8 @@ TUPLE: number-hashtable < wrapped-hashtable ;
: <number-hashtable> ( n -- shashtable )
<hashtable> number-hashtable boa ; inline
M: number-hashtable wrap-key drop <number-wrapper> ;
M: number-hashtable wrap-key
drop dup number? [ <number-wrapper> ] [ not-a-number ] if ;
M: number-hashtable clone
underlying>> clone number-hashtable boa ; inline