hash-sets.wrapped: support for "wrapped" hash-sets.
parent
cde20c935b
commit
06754951d3
|
@ -0,0 +1 @@
|
|||
John Benediktsson
|
|
@ -0,0 +1,15 @@
|
|||
! Copyright (C) 2013 John Benediktsson
|
||||
! See http://factorcode.org/license.txt for BSD license
|
||||
|
||||
USING: continuations hash-sets.wrapped namespaces
|
||||
prettyprint.config prettyprint.custom sets ;
|
||||
|
||||
IN: hash-sets.wrapped.prettyprint
|
||||
|
||||
M: wrapped-hash-set >pprint-sequence members ;
|
||||
|
||||
M: wrapped-hash-set pprint*
|
||||
nesting-limit inc
|
||||
[ pprint-object ] [ nesting-limit dec ] [ ] cleanup ;
|
||||
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
! Copyright (C) 2013 John Benediktsson
|
||||
! See http://factorcode.org/license.txt for BSD license
|
||||
|
||||
USING: accessors arrays hash-sets kernel sequences sets
|
||||
vocabs.loader ;
|
||||
|
||||
IN: hash-sets.wrapped
|
||||
|
||||
TUPLE: wrapped-key
|
||||
{ underlying read-only } ;
|
||||
|
||||
TUPLE: wrapped-hash-set
|
||||
{ underlying hash-set read-only } ;
|
||||
|
||||
GENERIC: wrap-key ( key wrapped-hash -- wrapped-key )
|
||||
|
||||
<PRIVATE
|
||||
|
||||
: wrapper@ ( key wrapped-hash -- wrapped-key hash-set )
|
||||
[ wrap-key ] [ nip underlying>> ] 2bi ; inline
|
||||
|
||||
PRIVATE>
|
||||
|
||||
M: wrapped-hash-set adjoin
|
||||
wrapper@ adjoin ; inline
|
||||
|
||||
M: wrapped-hash-set ?adjoin
|
||||
wrapper@ ?adjoin ; inline
|
||||
|
||||
M: wrapped-hash-set in?
|
||||
wrapper@ in? ; inline
|
||||
|
||||
M: wrapped-hash-set clear-set
|
||||
underlying>> clear-set ; inline
|
||||
|
||||
M: wrapped-hash-set delete
|
||||
wrapper@ delete ; inline
|
||||
|
||||
M: wrapped-hash-set cardinality
|
||||
underlying>> cardinality ; inline
|
||||
|
||||
M: wrapped-hash-set members
|
||||
underlying>> members [ underlying>> ] map ;
|
||||
|
||||
M: wrapped-hash-set equal?
|
||||
over wrapped-hash-set? [ [ underlying>> ] same? ] [ 2drop f ] if ;
|
||||
|
||||
INSTANCE: wrapped-hash-set set
|
||||
|
||||
{ "hash-sets.wrapped" "prettyprint" } "hash-sets.wrapped.prettyprint" require-when
|
Loading…
Reference in New Issue