}
} ;
+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" } "." }
}
} ;
+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" } "." }
[ 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