1 ! Copyright (C) 2013 John Benediktsson
2 ! See https://factorcode.org/license.txt for BSD license
4 USING: accessors hash-sets hash-sets.wrapped kernel math
5 math.hashcodes parser sequences vocabs.loader ;
12 { underlying number read-only } ;
14 C: <number-wrapper> number-wrapper
16 M: number-wrapper equal?
18 [ [ underlying>> ] bi@ number= ]
19 [ 2drop f ] if ; inline
21 M: number-wrapper hashcode*
22 nip underlying>> number-hashcode ; inline
26 TUPLE: number-hash-set < wrapped-hash-set ;
28 : <number-hash-set> ( n -- shash-set )
29 <hash-set> number-hash-set boa ; inline
31 M: number-hash-set wrap-key drop <number-wrapper> ;
33 M: number-hash-set clone
34 underlying>> clone number-hash-set boa ; inline
36 : >number-hash-set ( members -- shash-set )
37 [ <number-wrapper> ] map >hash-set number-hash-set boa ;
39 SYNTAX: NHS{ \ } [ >number-hash-set ] parse-literal ;
41 { "hash-sets.numbers" "prettyprint" } "hash-sets.numbers.prettyprint" require-when