factor/extra/assocs/lib/lib.factor

28 lines
662 B
Factor
Raw Normal View History

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 ;
2008-01-18 00:51:03 -05:00
: ref-at ( table key -- value ) swap at ;
2008-01-10 21:49:42 -05:00
2008-01-28 00:23:12 -05:00
! set-at with alternative stack effects
2008-01-10 21:49:42 -05:00
2008-01-18 00:51:03 -05:00
: put-at* ( table key value -- ) swap rot set-at ;
2008-01-10 21:49:42 -05:00
2008-01-18 00:51:03 -05:00
: put-at ( table key value -- table ) swap pick set-at ;
2008-01-10 21:49:42 -05:00
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2008-01-18 00:51:03 -05:00
: set-assoc-stack ( value key seq -- )
dupd [ key? ] with find-last nip set-at ;
2008-01-10 21:49:42 -05:00
: at-default ( key assoc -- value/key )
dupd at [ nip ] when* ;
2008-01-16 16:25:29 -05:00
: at-peek ( key assoc -- value ? )
at* dup >r [ peek ] when r> ;