From 89d4fdfb75dfdc012a91e5d425e2a9ad7d51f944 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Wed, 17 Apr 2013 15:29:42 -0700 Subject: [PATCH] sequences: cleanup shared code between supremum-by and infimum-by. --- core/sequences/sequences.factor | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index 004beed3d3..de30940973 100644 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -1031,17 +1031,23 @@ M: object sum 0 [ + ] binary-reduce ; inline : each-from ( ... seq quot: ( ... x -- ... ) i -- ... ) -rot (each) (each-integer) ; inline + + : supremum-by ( ... seq quot: ( ... elt -- ... x ) -- ... elt ) - [ keep swap ] curry [ [ first ] dip call ] 2keep [ - curry 2dip pick over after? - [ 2drop ] [ [ 2drop ] 2dip ] if - ] curry 1 each-from drop ; inline + [ after? ] select-by ; inline : infimum-by ( ... seq quot: ( ... elt -- ... x ) -- ... elt ) - [ keep swap ] curry [ [ first ] dip call ] 2keep [ - curry 2dip pick over before? - [ 2drop ] [ [ 2drop ] 2dip ] if - ] curry 1 each-from drop ; inline + [ before? ] select-by ; inline : shortest ( seqs -- elt ) [ length ] infimum-by ;