]> gitweb.factorcode.org Git - factor.git/commitdiff
core: (head) (tail) from-end -> from-tail. add cramp
authorDoug Coleman <doug.coleman@gmail.com>
Fri, 22 Jul 2022 21:55:20 +0000 (16:55 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Sun, 31 Jul 2022 18:24:58 +0000 (13:24 -0500)
core/io/io.factor
core/sequences/sequences.factor

index 9becbca5a6e4508c533eb81c80f015d33c1aa51e..36ea5e009d6cf4996ee2b26d21b8d254be7c0ac9 100644 (file)
@@ -124,7 +124,7 @@ SYMBOL: error-stream
 
 : (read-into) ( buf stream quot -- buf-slice/f )
     [ dup length over ] 2dip call
-    [ (head) <slice-unsafe> ] [ zero? not ] bi ; inline
+    [ head-to-index <slice-unsafe> ] [ zero? not ] bi ; inline
 
 PRIVATE>
 
index 00ce9f3f44477e25f8d39f5e55c375731d20271f..840fc927957b06edd4a4124e22734ca7d5300ce0 100644 (file)
@@ -135,12 +135,6 @@ INSTANCE: iota immutable-sequence
     [ [ nth-unsafe ] curry bi@ ]
     [ [ set-nth-unsafe ] curry bi@ ] 3bi ; inline
 
-: (head) ( seq n -- from to seq ) [ 0 ] 2dip swap ; inline
-
-: (tail) ( seq n -- from to seq ) swap [ length ] keep ; inline
-
-: from-end ( seq n -- seq n' ) [ dup length ] dip - ; inline
-
 : (1sequence) ( obj seq -- seq )
     [ 0 swap set-nth-unsafe ] keep ; inline
 
@@ -155,6 +149,12 @@ INSTANCE: iota immutable-sequence
 
 PRIVATE>
 
+: head-to-index ( seq to -- zero to seq ) [ 0 ] 2dip swap ; inline
+
+: index-to-tail ( seq from -- from length seq ) swap [ length ] keep ; inline
+
+: from-tail ( seq n -- seq n' ) [ dup length ] dip - ; inline
+
 : 1sequence ( obj exemplar -- seq )
     1 swap [ (1sequence) ] new-like ; inline
 
@@ -249,15 +249,17 @@ M: slice length [ to>> ] [ from>> ] bi - ; inline
 
 : short ( seq n -- seq n' ) over length min ; inline
 
-: head-slice ( seq n -- slice ) (head) <slice> ; inline
+: cramp ( seq n -- seq n' ) over length min ; inline
+
+: head-slice ( seq n -- slice ) head-to-index <slice> ; inline
 
-: tail-slice ( seq n -- slice ) (tail) <slice> ; inline
+: tail-slice ( seq n -- slice ) index-to-tail <slice> ; inline
 
 : rest-slice ( seq -- slice ) 1 tail-slice ; inline
 
-: head-slice* ( seq n -- slice ) from-end head-slice ; inline
+: head-slice* ( seq n -- slice ) from-tail head-slice ; inline
 
-: tail-slice* ( seq n -- slice ) from-end tail-slice ; inline
+: tail-slice* ( seq n -- slice ) from-tail tail-slice ; inline
 
 : but-last-slice ( seq -- slice ) 1 head-slice* ; inline
 
@@ -339,15 +341,15 @@ PRIVATE>
 : subseq ( from to seq -- subseq )
     dup subseq-as ;
 
-: head ( seq n -- headseq ) (head) subseq ;
+: head ( seq n -- headseq ) head-to-index subseq ;
 
-: tail ( seq n -- tailseq ) (tail) subseq ;
+: tail ( seq n -- tailseq ) index-to-tail subseq ;
 
 : rest ( seq -- tailseq ) 1 tail ;
 
-: head* ( seq n -- headseq ) from-end head ;
+: head* ( seq n -- headseq ) from-tail head ;
 
-: tail* ( seq n -- tailseq ) from-end tail ;
+: tail* ( seq n -- tailseq ) from-tail tail ;
 
 : but-last ( seq -- headseq ) 1 head* ;