This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home.

Source for wiki SubstituteCowan version 1

author

cowan

comment


    

ipnr

74.68.121.27

name

SubstituteCowan

readonly

0

text

== Substitution ==

`(substitute `''newobj oldobj list''`)`

`(substitute! `''newobj oldobj list''`)`

`(string-substitute `''newchar oldchar string''`)`

`(string-substitute! `''newchar oldchar string''`)`

`(vector-substitute `''newobj oldobj vector''`)`

`(vector-substitute! `''newobj oldobj vector''`)`

These procedures return a newly constructed container (list, string, or vector) in which all elements of the original container that are the same (in the sense of `eqv?`) as ''oldobj'' (or ''oldchar'') have been replaced by ''newobj'' (or ''newchar'').  The procedures with `!` in their names do the same thing, but may destructively modify the container.  (Common Lisp SUBSTITUTE, NSUBSTITUTE.)

== Transformation ==

`(transform `''transformer predicate list''`)`

`(transform! `''transformer predicate list''`)`

`(string-transform `''transformer predicate string''`)`

`(string-transform! `''transformer predicate string''`)`

`(vector-transform `''transformer predicate vector''`)`

`(vector-transform! `''transformer predicate vector''`)`

These procedures return a newly constructed container (list, string, or vector) in which all elements of the container (list, string, or vector) on which ''predicate'' returns `#t` have been replaced by the result of calling ''transformer'' on the element.  The procedures with `!` in their names do the same thing, but may destructively modify the container.  (Closely related to Common Lisp SUBSTITUTE-IF, NSUBSTITUTE-IF.)



== Issues ==

Should these procedures, if accepted, be merged into the SRFI 1, SRFI 13, and SRFI 43 packages?  They are only separated from it on historical grounds.

time

2012-12-24 09:01:39

version

1