lshift - shift list and return first element
This is not a command included in Tcl, but rather a common 'idiom' for in place list manipulation used e.g. for implementing queues are for commandline processing.
The following is taken from Tcl Gems though slightly modified:
proc lshift listVar { upvar 1 $listVar l set r [lindex $l 0] set l [lreplace $l [set l 0] 0] return $r }
You can use this programming idiom also without having the lshift command, e.g. with the K combinator:
K [lindex $l 0] [set l [lreplace $l [set l 0] 0]
Or more generalized:
Shift list count elements and return the respective elements.
proc lshift {listVar {count 1}} { upvar 1 $listVar l set r [lrange $l 0 [incr count -1]] set l [lreplace $l [set l 0] $count] return $r }
In lshift -Adding Unique Items to Lists of Fixed Length the command lshift puts an element on a list if it is not already there. It is used to implement a 'recently used' list