Listy są w Tclu podstawowym (i w sumie chyba jedynym) złożonym typem danych. Listą może być dowolny napis składający się z kilku słów; kolejne słowa są wtedy elementami tej listy. Jeśli jednak wewnątrz zawierają się { ... }, to całość wewnątrz klamer jest pojedynczym elementem listy (być może również składającym się z kilku słów, czyli listą zagnieżdżoną). Tcl posiada mnóstwo komend do operowania na takiej liście, poczynając od:

lindex <lista> <indeks>

Pierwszy argument to lista podana przez wartość, drugi zaś powinien być formą indeksu. Tzn. powinna być to albo liczba całkowita, albo kombinacja ze słowem „end”, np.:

lindex {ala ma kota} end-1

zwróci wartość „ma”.

Operacje takie jak dodawanie i odejmowanie są również dostępne w Tcl-u; służy do tego osobna komenda (będąca niejako oddzielnym interpreterem), „expr”. Np.:

set a 10 set x [expr $a+20]

Konstrukcje strukturalne W Tcl-u istnieją konstrukcje strukturalne znane np. z języka C, jak konstrukcje warunkowe i pętle. Jak każda właściwość jest to uzyskiwane za pomocą komend, np.:

if <warunek> ?then? <skrypt> ?elseif <skrypt>?... ?else?