-:: (split-when) ( seq quot: ( ... elt -- ... ? ) slice-quot -- pieces )
- 0
- [ [ seq quot find-from drop dup ] keep -rot ]
- [ [ seq slice-quot call ] keep 1 + swap ]
- V{ } produce-as nip swap
- seq length seq slice-quot call suffix! { } like ; inline
+: (split) ( seq quot: ( ... elt -- ... ? ) slice-quot -- pieces )
+ [ 0 ] 3dip pick [
+ swap curry [ keep 1 + swap ] curry [
+ [ find-from drop dup ] 2curry [ keep -rot ] curry
+ ] dip V{ } produce-as nip
+ ] 2keep swap [
+ [ length swapd ] keep
+ ] dip 2curry call suffix! { } like ; inline