HELP: prepend
{ $values { "seq1" sequence } { "seq2" sequence } { "newseq" sequence } }
-{ $description "Outputs a new sequence of the same type as " { $snippet "seq2" } " consisting of the elements of " { $snippet "seq2" } " followed by " { $snippet "seq1" } "." }
-{ $errors "Throws an error if " { $snippet "seq1" } " contains elements not permitted in sequences of the same class as " { $snippet "seq2" } "." }
+{ $description "Outputs a new sequence of the same type as " { $snippet "seq1" } " consisting of the elements of " { $snippet "seq2" } " followed by " { $snippet "seq1" } "." }
+{ $errors "Throws an error if " { $snippet "seq2" } " contains elements not permitted in sequences of the same class as " { $snippet "seq1" } "." }
{ $examples { $example "USING: prettyprint sequences ;"
"{ 1 2 } B{ 3 4 } prepend ."
- "B{ 3 4 1 2 }"
+ "{ 3 4 1 2 }"
}
{ $example "USING: prettyprint sequences strings ;"
"\"go\" \"car\" prepend ."
}
} ;
+HELP: prepend-as
+{ $values { "seq1" sequence } { "seq2" sequence } { "exemplar" sequence } { "newseq" sequence } }
+{ $description "Outputs a new sequence of the same type as " { $snippet "exemplar" } " consisting of the elements of " { $snippet "seq2" } " followed by " { $snippet "seq1" } "." }
+{ $errors "Throws an error if " { $snippet "seq1" } " or " { $snippet "seq2" } " contain elements not permitted in sequences of the same class as " { $snippet "exemplar" } "." }
+{ $examples
+ { $example "USING: prettyprint sequences ;"
+ "{ 3 4 } B{ 1 2 } B{ } prepend-as ."
+ "B{ 1 2 3 4 }"
+ }
+ { $example "USING: prettyprint sequences strings ;"
+ "\"ing\" \"go\" SBUF\" \" prepend-as ."
+ "SBUF\" going\""
+ }
+} ;
+
+{ prepend prepend-as } related-words
+
HELP: 3append
{ $values { "seq1" sequence } { "seq2" sequence } { "seq3" sequence } { "newseq" sequence } }
{ $description "Outputs a new sequence consisting of the elements of " { $snippet "seq1" } ", " { $snippet "seq2" } " and " { $snippet "seq3" } " in turn." }
-USING: arrays kernel math math.order math.parser namespaces
-sequences kernel.private sequences.private strings sbufs
-tools.test vectors assocs generic vocabs.loader ;
+USING: arrays byte-arrays kernel math math.order math.parser
+namespaces sequences kernel.private sequences.private strings
+sbufs tools.test vectors assocs generic vocabs.loader ;
IN: sequences.tests
[ "empty" ] [ { } [ "empty" ] [ "not empty" ] if-empty ] unit-test
[ "a" -1 append ] must-fail
[ -1 "a" append ] must-fail
+{ t } [ B{ 0 } { 1 } append byte-array? ] unit-test
+{ t } [ B{ 0 } { 1 } prepend byte-array? ] unit-test
+
[ [ ] ] [ 1 [ ] remove ] unit-test
[ [ ] ] [ 1 [ 1 ] remove ] unit-test
[ [ 3 1 1 ] ] [ 2 [ 3 2 1 2 1 ] remove ] unit-test
: append ( seq1 seq2 -- newseq ) over append-as ;
-: prepend ( seq1 seq2 -- newseq ) swap append ; inline
+: prepend-as ( seq1 seq2 exemplar -- newseq ) swapd append-as ; inline
+
+: prepend ( seq1 seq2 -- newseq ) over prepend-as ; inline
: 3append ( seq1 seq2 seq3 -- newseq ) pick 3append-as ;