]> gitweb.factorcode.org Git - factor.git/commitdiff
assocs: making keys and values generic.
authorJohn Benediktsson <mrjbq7@gmail.com>
Sun, 7 Apr 2013 04:19:56 +0000 (21:19 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Sun, 7 Apr 2013 04:19:56 +0000 (21:19 -0700)
core/assocs/assocs.factor

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