split1-when ( ... seq quot: ( ... elt -- ... ? ) -- ... before after ) (original) (raw)

split1-when ( ... seq quot: ( ... elt -- ... ? ) -- ... before after )
Factor handbook » The language » Collections » Sequence operations » Splitting sequences

Prev: split1-slice ( seq subseq -- before-slice after-slice )
Next: split1-when-slice ( ... seq quot: ( ... elt -- ... ? ) -- ... before-slice after-slice )

Vocabulary
splitting

Inputs

seq a sequence
quot a quotation with stack effect ( ... elt -- ... ? )

Outputs

before a new sequence
after a new sequence

Word description
Splits seq at the first occurrence of an element for which quot gives a true output and outputs the pieces before and after the split.

Definition

USING: kernel math sequences ;

IN: splitting

: split1-when
( ... seq quot: ( ... elt -- ... ? ) -- ... before after )
[ find drop ] keepd swap [ dup 1 + rot snip ] [ f ] if* ;
inline