add multi-assocs
parent
9e9c71b6d0
commit
22eb97778e
|
@ -1,9 +1,6 @@
|
||||||
USING: assocs kernel vectors sequences ;
|
USING: assocs kernel vectors sequences namespaces ;
|
||||||
IN: assocs.lib
|
IN: assocs.lib
|
||||||
|
|
||||||
: insert-at ( value key assoc -- )
|
|
||||||
[ ?push ] change-at ;
|
|
||||||
|
|
||||||
: >set ( seq -- hash )
|
: >set ( seq -- hash )
|
||||||
[ dup ] H{ } map>assoc ;
|
[ dup ] H{ } map>assoc ;
|
||||||
|
|
||||||
|
@ -19,5 +16,19 @@ IN: assocs.lib
|
||||||
: at-default ( key assoc -- value/key )
|
: at-default ( key assoc -- value/key )
|
||||||
dupd at [ nip ] when* ;
|
dupd at [ nip ] when* ;
|
||||||
|
|
||||||
: at-peek ( key assoc -- value ? )
|
: insert-at ( value key assoc -- )
|
||||||
at* dup >r [ peek ] when r> ;
|
[ ?push ] change-at ;
|
||||||
|
|
||||||
|
: peek-at* ( key assoc -- obj ? )
|
||||||
|
at* dup [ >r peek r> ] when ;
|
||||||
|
|
||||||
|
: peek-at ( key assoc -- obj )
|
||||||
|
peek-at* drop ;
|
||||||
|
|
||||||
|
: >multi-assoc ( assoc -- new-assoc )
|
||||||
|
[ 1vector ] assoc-map ;
|
||||||
|
|
||||||
|
: multi-assoc-each ( assoc quot -- )
|
||||||
|
[ with each ] curry assoc-each ; inline
|
||||||
|
|
||||||
|
: insert ( value variable -- ) namespace insert-at ;
|
||||||
|
|
Loading…
Reference in New Issue