hash-sets.sequences: adding sequence hashsets.
parent
fd879b16c7
commit
0e425e70d0
|
@ -0,0 +1 @@
|
|||
John Benediktsson
|
|
@ -0,0 +1,8 @@
|
|||
! Copyright (C) 2013 John Benediktsson
|
||||
! See http://factorcode.org/license.txt for BSD license
|
||||
|
||||
USING: hash-sets.sequences kernel prettyprint.custom ;
|
||||
|
||||
IN: hash-sets.sequences.prettyprint
|
||||
|
||||
M: sequence-hash-set pprint-delims drop \ SHS{ \ } ;
|
|
@ -0,0 +1,21 @@
|
|||
! Copyright (C) 2013 John Benediktsson
|
||||
! See http://factorcode.org/license.txt for BSD license
|
||||
|
||||
USING: hash-sets.sequences kernel literals sequences sets
|
||||
tools.test ;
|
||||
|
||||
IN: hash-sets.sequences.tests
|
||||
|
||||
[ t ] [ 0 4 "asdf" <slice> SHS{ "asdf" } in? ] unit-test
|
||||
|
||||
[ SHS{ "asdf" } ] [
|
||||
0 4 "asdf" <slice> SHS{ "asdf" } [ adjoin ] keep
|
||||
] unit-test
|
||||
|
||||
[ t ] [
|
||||
SHS{ } clone 0 4 "asdf" <slice> over adjoin
|
||||
"asdf" swap in?
|
||||
] unit-test
|
||||
|
||||
[ { "asdf" } ] [ SHS{ "asdf" } members ] unit-test
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
! Copyright (C) 2013 John Benediktsson
|
||||
! See http://factorcode.org/license.txt for BSD license
|
||||
|
||||
USING: accessors combinators hash-sets hash-sets.wrapped kernel
|
||||
parser sequences sets vocabs.loader ;
|
||||
|
||||
IN: hash-sets.sequences
|
||||
|
||||
TUPLE: sequence-wrapper < wrapped-key ;
|
||||
|
||||
C: <sequence-wrapper> sequence-wrapper
|
||||
|
||||
M: sequence-wrapper equal?
|
||||
over sequence-wrapper?
|
||||
[ [ underlying>> ] bi@ sequence= ]
|
||||
[ 2drop f ] if ; inline
|
||||
|
||||
M: sequence-wrapper hashcode*
|
||||
underlying>> [ sequence-hashcode ] recursive-hashcode ; inline
|
||||
|
||||
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 clone
|
||||
underlying>> clone sequence-hash-set boa ; inline
|
||||
|
||||
: >sequence-hash-set ( members -- shash-set )
|
||||
[ <sequence-wrapper> ] map >hash-set sequence-hash-set boa ;
|
||||
|
||||
SYNTAX: SHS{ \ } [ >sequence-hash-set ] parse-literal ;
|
||||
|
||||
{ "hash-sets.sequences" "prettyprint" } "hash-sets.sequences.prettyprint" require-when
|
Loading…
Reference in New Issue