! Copyright (C) 2013 John Benediktsson ! See http://factorcode.org/license.txt for BSD license USING: accessors assocs combinators hashtables hashtables.wrapped kernel math math.hashcodes parser vocabs.loader ; IN: hashtables.numbers TUPLE: number-wrapper < wrapped-key ; C: 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-hashtable < wrapped-hashtable ; : ( n -- shashtable ) number-hashtable boa ; inline M: number-hashtable wrap-key drop ; M: number-hashtable clone underlying>> clone number-hashtable boa ; inline : >number-hashtable ( assoc -- shashtable ) [ assoc-size ] keep assoc-union! ; M: number-hashtable new-assoc drop ; SYNTAX: NH{ \ } [ >number-hashtable ] parse-literal ; { "hashtables.numbers" "prettyprint" } "hashtables.numbers.prettyprint" require-when