Получить предпоследний элемент списка:
lindex {1 2 3 4} end-1
Питон:
some_list[-2]
Если сравниваем, то видим, что python и Перл - это кака, а tcl - конфетка. Проблемы питона: а вдруг я не имел в виду индекс с конца, а просто ошибся и неправильно вычислил индекс? А вдруг в списке всего один элемент? Правда, и tcl не выдаст ошибки, а выдаст пустую строку, но зато хотя бы есть способ _ясно_ сказать, что я имею в виду именно элемент энный с конца. Это вроде мелочь, но в tcl таких мелочей много и они хорошо складываются.
Соответственно, вопрос такой: откуда такие красивые мелочи в tcl, и где ещё подобное есть?
И вот предварительные итоги опроса
bar[0 .. $]
Matlab, Julia - так же как в tcl
xs[end-1]
red - особый сахар для итераторов, хотя и не совсем то же:
first back back tail a
С++ - итераторы приближаются к желаемому, хотя не совсем то
std::prev(std::prev(std::end(some_container)))
Rust - примерно то же, что С++, Вот велосипед для извлечения середины списка. Итератор от конца
v.iter().rev()
Haskell - можно сделать
data Index = Begin Int | End Int
Ada, VHDL - сахар для получения индекса последнего элемента, т.е. не то, что надо
A'Last
Антиприз достаётся Перлу и Питону, у которых для получения элемента от конца используется отрицательный индекс:
а[-2]