]> gitweb.factorcode.org Git - factor.git/commitdiff
Revert "splitting: simplify using locals/fry" refactor-core-july21 2637/head
authorDoug Coleman <doug.coleman@gmail.com>
Sun, 31 Jul 2022 18:40:37 +0000 (13:40 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Sun, 31 Jul 2022 18:44:14 +0000 (13:44 -0500)
This reverts commit 9e7ce0fa0a601b32735b26dfd8876d97e515fbdc.

core/splitting/splitting.factor

index c65835861318634a8c9f79794840bd29caf5b1c3..0002fbe880981f72b274c90eaeaa093bceb659aa 100644 (file)
@@ -28,7 +28,7 @@ PRIVATE>
 <PRIVATE
 
 : subseq-range ( seq subseq -- from/f to/f )
-    [ subseq-index ] keep '[ dup _ length + ] [ f f ] if* ; inline
+    [ subseq-index ] keep [ dupd length + ] curry [ f f ] if* ; inline
 
 : (split1) ( seq subseq snip-quot -- before after )
     [ [ subseq-range ] keepd over ] dip [ 2nip f ] if ; inline
@@ -45,7 +45,7 @@ PRIVATE>
     [
         1array
     ] [
-        [ dup ] swap '[ _ split1-slice swap ] produce nip
+        [ dup ] swap [ split1-slice swap ] curry produce nip
     ] if-empty ;
 
 : replace ( seq old new -- new-seq )
@@ -54,7 +54,7 @@ PRIVATE>
 <PRIVATE
 
 : (split1-when) ( ... seq quot: ( ... elt -- ... ? ) snip-quot -- ... before-slice after-slice )
-    [ dupd find drop ] dip '[ dup 1 + rot @ ] [ f ] if* ; inline
+    [ dupd find drop ] dip [ swap [ dup 1 + ] dip ] prepose [ f ] if* ; inline
 
 PRIVATE>
 
@@ -74,26 +74,28 @@ PRIVATE>
 
 <PRIVATE
 
-:: (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
 
 PRIVATE>
 
 : split-when ( ... seq quot: ( ... elt -- ... ? ) -- ... pieces )
-    [ subseq-unsafe ] (split-when) ; inline
+    [ subseq-unsafe ] (split) ; inline
 
 : split-when-slice ( ... seq quot: ( ... elt -- ... ? ) -- ... pieces )
-    [ <slice-unsafe> ] (split-when) ; inline
+    [ <slice-unsafe> ] (split) ; inline
 
 : split ( seq separators -- pieces )
-    '[ _ member? ] split-when ; inline
+    [ member? ] curry split-when ; inline
 
 : split-slice ( seq separators -- pieces )
-    '[ _ member? ] split-when-slice ; inline
+    [ member? ] curry split-when-slice ; inline
 
 : split-indices ( seq indices -- pieces )
     over length suffix 0 swap [