Paste: group-by

Author: mrjbq7
Mode: factor
Date: Sat, 9 Apr 2011 17:21:03
Plain Text |
: (sequence>assoc) ( seq quot: ( elt -- value key ) quot: ( value key assoc -- ) assoc -- assoc )
    [ swap curry compose each ] keep ; inline

: sequence>assoc ( seq quot: ( elt -- value key ) quot: ( value key assoc -- ) exemplar -- assoc )
    clone (sequence>assoc) ; inline

: sequence>hashtable ( seq quot: ( elt -- value key ) quot: ( value key hashtable -- ) -- hashtable )
    H{ } sequence>assoc ; inline

: group-by ( seq quot: ( elt -- value key ) -- hashtable )
    [ push-at ] sequence>hashtable ; inline

: group-by-key ( seq quot: ( elt -- key ) -- hashtable )
    [ dup ] prepose group-by ; inline

: group-by-value ( seq quot: ( elt -- value ) -- hashtable )
    [ dup ] compose group-by ; inline

New Annotation

Summary:
Author:
Mode:
Body: