30 lines
851 B
Factor
Executable File
30 lines
851 B
Factor
Executable File
! Copyright (C) 2009 Doug Coleman.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: kernel sequences assocs fry ;
|
|
IN: histogram
|
|
|
|
<PRIVATE
|
|
|
|
: (sequence>assoc) ( seq quot assoc -- assoc )
|
|
[ swap curry each ] keep ; inline
|
|
|
|
PRIVATE>
|
|
|
|
: sequence>assoc* ( assoc seq quot: ( obj assoc -- ) -- assoc )
|
|
rot (sequence>assoc) ; inline
|
|
|
|
: sequence>assoc ( seq quot: ( obj assoc -- ) exemplar -- assoc )
|
|
clone (sequence>assoc) ; inline
|
|
|
|
: sequence>hashtable ( seq quot: ( obj hashtable -- ) -- hashtable )
|
|
H{ } sequence>assoc ; inline
|
|
|
|
: histogram* ( hashtable seq -- hashtable )
|
|
[ inc-at ] sequence>assoc* ;
|
|
|
|
: histogram ( seq -- hashtable )
|
|
[ inc-at ] sequence>hashtable ;
|
|
|
|
: collect-values ( seq quot: ( obj hashtable -- ) -- hash )
|
|
'[ [ dup @ ] dip push-at ] sequence>hashtable ; inline
|