wp.factor
Tuesday, December 9, 2008
I came across a benchmark for comparing languages today. It did not contain a version for Factor, so I thought I would contribute one.
The idea is fairly straightforward, and in the words of the author:
read stdin, tokenize into words
for each word count how often it occurs
output words and counts, sorted in descending order by count
My attempt is below:
USING: arrays assocs kernel io math math.parser
prettyprint sequences splitting sorting ;
IN: wp
: count-words ( assoc string -- assoc' )
" " split harvest [ over inc-at ] each ;
: sort-assoc ( assoc -- seq )
>alist sort-values reverse ;
: print-results ( seq -- )
[ number>string " " glue print ] assoc-each ;
: wp ( -- )
H{ } clone
[ [ count-words ] each-line ]
[ sort-assoc print-results ]
bi drop ;
MAIN: wp
You can run this from factor by putting it in a file called wp.factor
and running from the shell:
$ cat file.txt | ./factor -run=wp