LINUX.ORG.RU

История изменений

Исправление antares0, (текущая версия) :

В тикле, для вывода предназначена команда puts.
Но спрашивается, почему puts по умолчанию не ведёт себя как ... В чём смысл? Я не вижу его.

Смысл в том что puts по основной идее tcl пишет в потоковые дескрипторы юникса: терминалы, сокеты, файлы - взаимодействие с инородными системами где нужен «сырой» поток символов а гомоиконность tcl-объектов будет чаще мешать. Его прямым аналогом в лиспе будет write-line который точно также игнорирует гомоиконность. Только что в лиспе он честно требует приводить символы и деревья к строке для однозначности. Лиспы вобще были исторически более замкнуты на свой REPL чем на общение с другими системами поэтому однообразная гомоиконость для них умолчание, а наоборот делать «клей» на лиспе несколько больше работы чем с помощью shell-like tcl|bash/

нет соответствия print-read, которое есть в лиспе.

Даже в лиспе две параллельные системы ввода-вывода. Отдельно на основе «сырых» байтов|символов и отдельно обобщеный read/print на основе *rеad-table* и *print-всякого Второй в tcl просто не завезли за неопределенностью его статуса. Она и в CL выросла из необходимости различать символы как уникальные объекты и строки в качестве последовательности символов. В tcl не было концепции символов оттуда и пошел разлад.

Может быть puts [list <выражение>] является аналогом лиспового print.

Не должен.

format (для вывода в красивом виде) и print - для гомоиконного вывода.

в хламовнике wiki.tk наверняка есть.

Исходная версия antares0, :

В тикле, для вывода предназначена команда puts.
Но спрашивается, почему puts по умолчанию не ведёт себя как ... В чём смысл? Я не вижу его.

Смысл в том что puts по основной идее tcl пишет в потоковые дескрипторы юникса: терминалы, сокеты, файлы - туда где нужен «сырой» поток символов а гомоиконность будет чаще мешать. Его прямым аналогом в лиспе будет write-line который точно также игнорирует гомоиконность. Только что в лиспе он честно требует приводить символы и деревья к строке для однозначности.

нет соответствия print-read, которое есть в лиспе.

Даже в лиспе две параллельные системы ввода-вывода. Отдельно на основе «сырых» байтов|символов и отдельно обобщеный read/print на основе *rеad-table* и *print-всякого Второй в tcl просто не завезли за неопределенностью его статуса. Она и в CL выросла из необходимости различать символы как уникальные объекты и строки в качестве последовательности символов. В tcl не было концепции символов оттуда и пошел разлад.

Может быть puts [list <выражение>] является аналогом лиспового print.

Не должен.

format (для вывода в красивом виде) и print - для гомоиконного вывода.

в хламовнике wiki.tk наверняка есть.