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