Replace elements in a list with new elements The documentation for this command can be found at http://www.purl.org/tcl/home/man/tcl8.5/TclCmd/lreplace.htm lreplace list first last ?element element ...? '''Lreplace''' returns a new list formed by replacing one or more elements of ''list'' with the ''element'' arguments. ''First'' gives the index in ''list'' of the first element to be replaced (0 refers to the first element). If ''first'' is less than zero then it refers to the first element of ''list''; the element indicated by ''first'' must exist in the list. ''Last'' gives the index in ''list'' of the last element to be replaced. If ''last'' is less than ''first'' then no elements are deleted; the new elements are simply inserted before ''first''. ''First'' or ''last'' may be '''end''' (or any abbreviation of it) to refer to the last element of the list. The ''element'' arguments specify zero or more new arguments to be added to the list in place of those that were deleted. Each ''element'' argument will become a separate element of the list. If no ''element'' arguments are specified, then the elements between first and last are simply deleted. (from: TclHelp) ---- Examples: % lreplace {a b c} 0 0 @ @ b c % lreplace {a b c} 1 1 a c ---- If the ''last'' argument of lreplace was made optional, one could essentially just alias ldelete to lreplace [CmCc] ---- [TFW] Feb 20, 2004 - Inplace replacements Often time we have a long list we want to replace "in-place", that is without copying the list to a new altered list. Using the [K] combinator it is quite easy. (Note 8.5 is needed for the {expand} syntax) proc lipreplace {_list first last args} { upvar $_list list set list [lreplace [K $list [set list ""]] $first $last {expand}$args] } > set A [list 1 2 3] 1 2 3 > lipreplace A 1 end c d 1 c d ---- See also: [linsert] - [lappend] - [list] ---- [Category Command]