]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences: adding surround-as and glue-as.
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 11 Dec 2020 01:02:53 +0000 (17:02 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 11 Dec 2020 01:02:53 +0000 (17:02 -0800)
core/sequences/sequences-docs.factor
core/sequences/sequences.factor

index 5af707af18bdbd4d101fb87b8459fa6ff62a35be..ced530971ec12ac2fe4db444ebdde539e1a3ee83 100644 (file)
@@ -975,6 +975,18 @@ HELP: surround
     }
 } ;
 
+HELP: surround-as
+{ $values { "seq1" sequence } { "seq2" sequence } { "seq3" sequence } { "exemplar" sequence } { "newseq" sequence } }
+{ $description "Outputs a new sequence with " { $snippet "seq1" } " inserted between " { $snippet "seq2" } " and " { $snippet "seq3" } " of the same type as " { $snippet "exemplar" } "." }
+{ $examples
+    { $example "USING: sequences prettyprint ;"
+               "\"sssssh\" \"(\" \")\" SBUF\" \" surround-as ."
+               "SBUF\" (sssssh)\""
+    }
+} ;
+
+{ surround surround-as } related-words
+
 HELP: glue
 { $values { "seq1" sequence } { "seq2" sequence } { "seq3" sequence } { "newseq" sequence } }
 { $description "Outputs a new sequence with " { $snippet "seq3" } " inserted between " { $snippet "seq1" } " and " { $snippet "seq2" } "." }
@@ -985,6 +997,18 @@ HELP: glue
     }
 } ;
 
+HELP: glue-as
+{ $values { "seq1" sequence } { "seq2" sequence } { "seq3" sequence } { "exemplar" sequence } { "newseq" sequence } }
+{ $description "Outputs a new sequence with " { $snippet "seq3" } " inserted between " { $snippet "seq1" } " and " { $snippet "seq2" } " of the same type as " { $snippet "exemplar" } "." }
+{ $examples
+    { $example "USING: sequences prettyprint ;"
+               "\"a\" \"b\" \",\" SBUF\" \" glue-as ."
+               "SBUF\" a,b\""
+    }
+} ;
+
+{ glue glue-as } related-words
+
 HELP: subseq
 { $values { "from" "a non-negative integer" } { "to" "a non-negative integer" } { "seq" sequence } { "subseq" "a new sequence" } }
 { $description "Outputs a new sequence consisting of all elements starting from and including " { $snippet "from" } ", and up to but not including " { $snippet "to" } "." }
index f4b7cb2985ae103407c3f3263ef08c70d578250d..144ae4bb9b7c4540148c4e2d77da178676101651 100644 (file)
@@ -361,23 +361,28 @@ PRIVATE>
     [ 2dup [ length ] bi@ + ] dip
     [ (append) ] new-like ; inline
 
+: append ( seq1 seq2 -- newseq ) over append-as ;
+
+: prepend-as ( seq1 seq2 exemplar -- newseq ) swapd append-as ; inline
+
+: prepend ( seq1 seq2 -- newseq ) over prepend-as ;
+
 : 3append-as ( seq1 seq2 seq3 exemplar -- newseq )
     [ 3dup [ length ] tri@ + + ] dip [
         [ [ 2over [ length ] bi@ + ] dip copy-unsafe ]
         [ (append) ] bi
     ] new-like ; inline
 
-: append ( seq1 seq2 -- newseq ) over append-as ;
-
-: prepend-as ( seq1 seq2 exemplar -- newseq ) swapd append-as ; inline
+: 3append ( seq1 seq2 seq3 -- newseq ) pick 3append-as ;
 
-: prepend ( seq1 seq2 -- newseq ) over prepend-as ;
+: surround-as ( seq1 seq2 seq3 exemplar -- newseq )
+    [ swap ] 2dip 3append-as ; inline
 
-: 3append ( seq1 seq2 seq3 -- newseq ) pick 3append-as ;
+: surround ( seq1 seq2 seq3 -- newseq ) pick surround-as ; inline
 
-: surround ( seq1 seq2 seq3 -- newseq ) swapd 3append ; inline
+: glue-as ( seq1 seq2 seq3 exemplar -- newseq ) swapd 3append-as ; inline
 
-: glue ( seq1 seq2 seq3 -- newseq ) swap 3append ; inline
+: glue ( seq1 seq2 seq3 -- newseq ) pick glue-as ; inline
 
 : change-nth ( ..a i seq quot: ( ..a elt -- ..b newelt ) -- ..b )
     [ [ nth ] dip call ] 2keepd set-nth-unsafe ; inline