From 90624a8764c81b8feb420c12fb16d8fb04e92f79 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Fri, 27 Jun 2008 19:40:46 -0500 Subject: [PATCH] monotonic-split works on empty seqs --- extra/sequences/lib/lib.factor | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/extra/sequences/lib/lib.factor b/extra/sequences/lib/lib.factor index 56488818ab..324b8d166d 100755 --- a/extra/sequences/lib/lib.factor +++ b/extra/sequences/lib/lib.factor @@ -106,17 +106,21 @@ MACRO: firstn ( n -- ) : v, ( -- ) V{ } clone , ; : ,v ( -- ) building get dup peek empty? [ dup pop* ] when drop ; -: monotonic-split ( seq quot -- newseq ) +: (monotonic-split) ( seq quot -- newseq ) [ >r dup unclip suffix r> v, [ pick ,, call [ v, ] unless ] curry 2each ,v ] { } make ; +: monotonic-split ( seq quot -- newseq ) + over empty? [ 2drop { } ] [ (monotonic-split) ] if ; + : delete-random ( seq -- value ) [ length random ] keep [ nth ] 2keep delete-nth ; +ERROR: element-not-found ; : split-around ( seq quot -- before elem after ) - dupd find over [ "Element not found" throw ] unless + dupd find over [ element-not-found ] unless >r cut rest r> swap ; inline : (map-until) ( quot pred -- quot )