sequences.extras: adding supremum-by and infimum-by that call the "map" quot once per element.

db4
John Benediktsson 2012-05-14 16:44:07 -07:00
parent d035d1abfc
commit 6f5e1f16e0
1 changed files with 12 additions and 0 deletions

View File

@ -45,6 +45,18 @@ IN: sequences.extras
: minimum ( seq quot: ( ... elt -- ... x ) -- elt ) : minimum ( seq quot: ( ... elt -- ... x ) -- elt )
[ dup ?first ] dip [ min-by ] curry reduce ; inline [ dup ?first ] dip [ min-by ] curry reduce ; inline
: supremum-by ( seq quot: ( ... elt -- ... x ) -- elt )
[ [ first dup ] dip call ] 2keep [
dupd call pick dupd max over =
[ [ 2drop ] 2dip ] [ 2nip ] if
] curry 1 each-from drop ; inline
: infimum-by ( seq quot: ( ... elt -- ... x ) -- elt )
[ [ first dup ] dip call ] 2keep [
dupd call pick dupd min over =
[ [ 2drop ] 2dip ] [ 2nip ] if
] curry 1 each-from drop ; inline
: all-subseqs ( seq -- seqs ) : all-subseqs ( seq -- seqs )
dup length [1,b] [ <clumps> ] with map concat ; dup length [1,b] [ <clumps> ] with map concat ;