]> gitweb.factorcode.org Git - factor.git/commitdiff
splitting: use unsafe in split-when, simplify split-indices.
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 17 Jul 2015 15:00:24 +0000 (08:00 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 17 Jul 2015 19:14:33 +0000 (12:14 -0700)
core/splitting/splitting.factor

index bdae704af72ace54a1e9caa5624078984afcc874..a4d9cd48ad79d93e11c3ff0eb75f02c9b7a8086a 100644 (file)
@@ -1,6 +1,7 @@
 ! Copyright (C) 2005, 2009 Slava Pestov.
 ! 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
 
 <PRIVATE
@@ -89,10 +90,10 @@ PRIVATE>
 PRIVATE>
 
 : split-when ( ... seq quot: ( ... elt -- ... ? ) -- ... pieces )
-    [ subseq ] (split) ; inline
+    [ subseq-unsafe ] (split) ; inline
 
 : split-when-slice ( ... seq quot: ( ... elt -- ... ? ) -- ... pieces )
-    [ <slice> ] (split) ; inline
+    [ <slice-unsafe> ] (split) ; inline
 
 : split ( seq separators -- pieces )
     [ member? ] curry split-when ; inline
@@ -101,8 +102,9 @@ PRIVATE>
     [ member? ] curry split-when-slice ; inline
 
 : split-indices ( seq indices -- pieces )
-    over length suffix 0 swap [ dup swapd 2array ] map nip
-    [ first2 rot subseq ] with map ;
+    over length suffix 0 swap [
+        [ pick subseq ] keep swap
+    ] map 2nip ;
 
 GENERIC: string-lines ( str -- seq )