add surround and glue to sequences

db4
Doug Coleman 2008-12-03 08:32:54 -06:00
parent a329960d7e
commit fd270d8ef2
3 changed files with 29 additions and 0 deletions

View File

@ -714,6 +714,26 @@ HELP: 3append
}
} ;
HELP: surround
{ $values { "seq1" sequence } { "seq2" sequence } { "seq3" sequence } { "newseq" sequence } }
{ $description "Outputs a new sequence with " { $snippet "seq1" } " inserted between " { $snippet "seq2" } " and " { $snippet "seq3" } "." }
{ $examples
{ $example "USING: sequences prettyprint ;"
"\"sssssh\" \"(\" \")\" surround ."
"\"(sssssh)\""
}
} ;
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" } "." }
{ $examples
{ $example "USING: sequences prettyprint ;"
"\"a\" \"b\" \",\" glue ."
"\"a,b\""
}
} ;
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" } "." }
@ -1348,6 +1368,8 @@ ARTICLE: "sequences-appending" "Appending sequences"
{ $subsection append }
{ $subsection prepend }
{ $subsection 3append }
{ $subsection surround }
{ $subsection glue }
{ $subsection concat }
{ $subsection join }
"A pair of words useful for aligning strings:"

View File

@ -268,3 +268,6 @@ M: bogus-hashcode hashcode* 2drop 0 >bignum ;
[ { 1 3 "X" 5 7 } ] [ "X" 2 { 1 3 5 7 } insert-nth ] unit-test
[ V{ 0 2 } ] [ "a" { "a" "b" "a" } indices ] unit-test
[ "a,b" ] [ "a" "b" "," glue ] unit-test
[ "(abc)" ] [ "abc" "(" ")" surround ] unit-test

View File

@ -317,6 +317,10 @@ PRIVATE>
: 3append ( seq1 seq2 seq3 -- newseq ) pick 3append-as ;
: surround ( seq1 seq2 seq3 -- newseq ) swapd 3append ; inline
: glue ( seq1 seq2 seq3 -- newseq ) swap 3append ; inline
: change-nth ( i seq quot -- )
[ [ nth ] dip call ] 3keep drop set-nth ; inline