assocs: making keys and values generic.

db4
John Benediktsson 2013-04-06 21:19:56 -07:00
parent 987ecea441
commit 9926c205a5
1 changed files with 4 additions and 4 deletions

View File

@ -16,6 +16,8 @@ GENERIC: assoc-size ( assoc -- n )
GENERIC: assoc-like ( assoc exemplar -- newassoc ) GENERIC: assoc-like ( assoc exemplar -- newassoc )
GENERIC: assoc-clone-like ( assoc exemplar -- newassoc ) GENERIC: assoc-clone-like ( assoc exemplar -- newassoc )
GENERIC: >alist ( assoc -- newassoc ) GENERIC: >alist ( assoc -- newassoc )
GENERIC: keys ( assoc -- keys )
GENERIC: values ( assoc -- values )
M: assoc assoc-like drop ; inline M: assoc assoc-like drop ; inline
@ -107,11 +109,9 @@ M: assoc assoc-clone-like ( assoc exemplar -- newassoc )
[ dup assoc-size ] dip new-assoc [ dup assoc-size ] dip new-assoc
[ [ set-at ] with-assoc assoc-each ] keep ; inline [ [ set-at ] with-assoc assoc-each ] keep ; inline
: keys ( assoc -- keys ) M: assoc keys [ drop ] { } assoc>map ;
[ drop ] { } assoc>map ;
: values ( assoc -- values ) M: assoc values [ nip ] { } assoc>map ;
[ nip ] { } assoc>map ;
: delete-at* ( key assoc -- old ? ) : delete-at* ( key assoc -- old ? )
[ at* ] 2keep delete-at ; [ at* ] 2keep delete-at ;