splitting: use unsafe in split-when, simplify split-indices.
parent
9fad4187f3
commit
573ac9c9e9
|
@ -1,6 +1,7 @@
|
||||||
! Copyright (C) 2005, 2009 Slava Pestov.
|
! Copyright (C) 2005, 2009 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: arrays kernel math sequences strings sbufs ;
|
USING: arrays kernel math sequences sequences.private strings
|
||||||
|
sbufs ;
|
||||||
IN: splitting
|
IN: splitting
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
@ -89,10 +90,10 @@ PRIVATE>
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: split-when ( ... seq quot: ( ... elt -- ... ? ) -- ... pieces )
|
: split-when ( ... seq quot: ( ... elt -- ... ? ) -- ... pieces )
|
||||||
[ subseq ] (split) ; inline
|
[ subseq-unsafe ] (split) ; inline
|
||||||
|
|
||||||
: split-when-slice ( ... seq quot: ( ... elt -- ... ? ) -- ... pieces )
|
: split-when-slice ( ... seq quot: ( ... elt -- ... ? ) -- ... pieces )
|
||||||
[ <slice> ] (split) ; inline
|
[ <slice-unsafe> ] (split) ; inline
|
||||||
|
|
||||||
: split ( seq separators -- pieces )
|
: split ( seq separators -- pieces )
|
||||||
[ member? ] curry split-when ; inline
|
[ member? ] curry split-when ; inline
|
||||||
|
@ -101,8 +102,9 @@ PRIVATE>
|
||||||
[ member? ] curry split-when-slice ; inline
|
[ member? ] curry split-when-slice ; inline
|
||||||
|
|
||||||
: split-indices ( seq indices -- pieces )
|
: split-indices ( seq indices -- pieces )
|
||||||
over length suffix 0 swap [ dup swapd 2array ] map nip
|
over length suffix 0 swap [
|
||||||
[ first2 rot subseq ] with map ;
|
[ pick subseq ] keep swap
|
||||||
|
] map 2nip ;
|
||||||
|
|
||||||
GENERIC: string-lines ( str -- seq )
|
GENERIC: string-lines ( str -- seq )
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue