From c1fe403b9824089481f41aee42c8792890ec62e1 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Wed, 26 Sep 2012 15:33:40 -0700 Subject: [PATCH] assocs.extras: move assocs extras words here. --- extra/assocs/extras/extras.factor | 17 ++++++++++++++++- extra/sequences/extras/extras.factor | 13 ------------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/extra/assocs/extras/extras.factor b/extra/assocs/extras/extras.factor index 6193c24ba6..43ae4121e7 100644 --- a/extra/assocs/extras/extras.factor +++ b/extra/assocs/extras/extras.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2012 John Benediktsson +! Copyright (C) 2012 John Benediktsson, Doug Coleman ! See http://factorcode.org/license.txt for BSD license USING: arrays assocs assocs.private kernel sequences ; @@ -21,3 +21,18 @@ IN: assocs.extras : substitute! ( seq assoc -- seq ) substituter map! ; + +: assoc-reduce ( ... assoc identity quot: ( ... prev key value -- next ) -- ... result ) + [ >alist ] 2dip [ first2 ] prepose reduce ; inline + +: reduce-keys ( ... assoc identity quot: ( ... prev elt -- ... next ) -- ... result ) + [ drop ] prepose assoc-reduce ; inline + +: reduce-values ( ... assoc identity quot: ( ... prev elt -- ... next ) -- ... result ) + [ nip ] prepose assoc-reduce ; inline + +: sum-keys ( assoc -- n ) 0 [ + ] reduce-keys ; inline + +: sum-values ( assoc -- n ) 0 [ + ] reduce-values ; inline + + diff --git a/extra/sequences/extras/extras.factor b/extra/sequences/extras/extras.factor index 15010f6c32..26e17f654a 100644 --- a/extra/sequences/extras/extras.factor +++ b/extra/sequences/extras/extras.factor @@ -337,18 +337,5 @@ PRIVATE> : reverse-as ( seq exemplar -- newseq ) [ (reverse) ] [ like ] bi* ; -: assoc-reduce ( ... assoc identity quot: ( ... prev key value -- next ) -- ... result ) - [ >alist ] 2dip [ first2 ] prepose reduce ; inline - -: reduce-keys ( ... assoc identity quot: ( ... prev elt -- ... next ) -- ... result ) - [ drop ] prepose assoc-reduce ; inline - -: reduce-values ( ... assoc identity quot: ( ... prev elt -- ... next ) -- ... result ) - [ nip ] prepose assoc-reduce ; inline - -: sum-keys ( assoc -- n ) 0 [ + ] reduce-keys ; inline - -: sum-values ( assoc -- n ) 0 [ + ] reduce-values ; inline - : map-product ( ... seq quot: ( ... elt -- ... n ) -- ... n ) [ 1 ] 2dip [ dip * ] curry [ swap ] prepose each ; inline -- 2.34.1