The lrange command returns one or more adjacent elements from a list.
http://www.purl.org/tcl/home/man/tcl8.5/TclCmd/lrange.htm
List must be a valid Tcl list. This command will return a new list consisting of elements first through last, inclusive. First or last may be end (or any abbreviation of it) to refer to the last element of the list. If first is less than zero, it is treated as if it were zero. If last is greater than or equal to the number of elements in the list, then it is treated as if it were end. If first is greater than last then an empty string is returned. Note: “lrange list first first” does not always produce the same result as “lindex list first” (although it often does for simple fields that aren't enclosed in braces); it does, however, produce exactly the same results as “list [lindex list first]”
set x [lrange $x[set x {}] 0 end] may be used to transform $x into a pure list, which enhances performance in some situations.
LV: To get the benefits of this, do I need to assign the lrange value to x? Is there a comparison of the various techniques for forcing a string to be a list with regards to performance - is lrange the fastest?