{ "ab" } [ f 2 "abcdef" subseq* ] unit-test
{ "cdef" } [ 2 f "abcdef" subseq* ] unit-test
{ "cd" } [ -4 -2 "abcdef" subseq* ] unit-test
+
+{ "foo" "" } [ "foo" [ blank? ] cut-when ] unit-test
+{ "foo" " " } [ "foo " [ blank? ] cut-when ] unit-test
+{ "" " foo" } [ " foo" [ blank? ] cut-when ] unit-test
+{ "foo" " bar" } [ "foo bar" [ blank? ] cut-when ] unit-test
{ 3 [ first3-unsafe f ] }
[ drop first4-unsafe ]
} case ;
+
+: cut-when ( ... seq quot: ( ... elt -- ... ? ) -- ... before after )
+ [ find drop ] 2keep drop swap
+ [ cut ] [ f over like ] if* ; inline