2008-01-10 21:49:42 -05:00
|
|
|
USING: assocs kernel vectors sequences ;
|
|
|
|
IN: assocs.lib
|
|
|
|
|
|
|
|
: insert-at ( value key assoc -- )
|
|
|
|
[ ?push ] change-at ;
|
|
|
|
|
|
|
|
: >set ( seq -- hash )
|
|
|
|
[ dup ] H{ } map>assoc ;
|
|
|
|
|
|
|
|
: ref-hash ( table key -- value ) swap at ;
|
|
|
|
|
|
|
|
! set-hash with alternative stack effects
|
|
|
|
|
|
|
|
: put-hash* ( table key value -- ) swap rot set-at ;
|
|
|
|
|
|
|
|
: put-hash ( table key value -- table ) swap pick set-at ;
|
|
|
|
|
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
|
|
|
|
: set-hash-stack ( value key seq -- )
|
2008-01-10 22:03:34 -05:00
|
|
|
dupd [ key? ] when find-last nip set-at ;
|
2008-01-10 21:49:42 -05:00
|
|
|
|
|
|
|
: at-default ( key assoc -- value/key )
|
|
|
|
dupd at [ nip ] when* ;
|