Изучаю TCL

Учу «Тикль» потихонечку — вечерами, урывками. Язык нравится очень простым синтаксисом, который позволяет делать крутые штуки — всё в языке считается строкой, а вопросом интерпретации строки занимается код. Это даёт возможность, например, расширять язык по необходимости.

Попробую пояснить как это работает. В данном случае все три параметра, передаваемых команде puts эквивалентны:
puts Hello; # это строка
puts "Hello"; # это тоже строка
puts {Hello}; # и это строка!
То есть фигурные скобки — это не «блок кода», а строка, правда со своими особыми правилами интерполяции. Это, вместе с конструкциями изменения уровня выполнения и позволяет создавать собственные дополнения к языку. Например, добавил в язык конструкцию unless (это такой if, только проверяется не истинность, а ложность условия):
proc unless {condition body} {
    ;# uplevel — конструкция, позволяющая выполнить блок выше по стеку
    ;# то есть, в данном случае, мы выполняем код в контектсе вызвавшего
    ;# процедуру unless кода, что позволяет увидеть все переменные, которые там определены
    uplevel [list if !($condition) $body]
}

set var false

;# Это наша новая команда
unless { $var } {
     puts "False: $var" ;# напечатает «False: false»
}

set var true

;# А это обычный if, которые есть в языке
if { $var } {
    puts "True: $var" ;#  напечатает «True: true»
}
Надо бы, конечно, что-то пописа́ть, чтобы лучше понять язык, задумки есть, скоро приступлю.
26 июня 2015 09:31

vladon (инкогнито)
26 июня 2015, 15:21

А зачем? Какой смысл?

Арефьев Тимур (инкогнито)
26 июня 2015, 17:09

У вас поиск по блогу сломался.

bolknote.ru (bolknote.ru)
26 июня 2015, 20:15, ответ предназначен vladon

А зачем? Какой смысл?
Что зачем? Не понимаю.

bolknote.ru (bolknote.ru)
26 июня 2015, 20:15, ответ предназначен Арефьеву Тимуру

У вас поиск по блогу сломался.
В чём это выражается?

PastorGL (инкогнито)
26 июня 2015, 21:58

тикль безумно крут, долгое время был моим любимым языком.

программа на нём может на лету дописывать и расширять саму себя, и можно делать всякие дикие фокусы. так я однажды написал на нём чатбота, который учился разговаривать прямо во время разговора, дописывая ветки диалогов в исходник собственной базы ответов. правда, я потом так и не придумал, зачем его ещё можно использовать, кроме как в качестве странного хобби.

bolknote.ru (bolknote.ru)
26 июня 2015, 22:50, ответ предназначен PastorGL

Тикль выглядит простым, но писать на нём без ТиКея мне нечего, а вот ТиКей пока идёт сложно — только я начал понимать что к чему, как выяснил, что теперь надо писать на Tlk — он интереснее и более развитый.

bolknote.ru (bolknote.ru)
26 июня 2015, 22:51, ответ предназначен PastorGL

Tlk — он интереснее и более развитый.
На Ttk то есть.

Сергей (инкогнито)
27 июня 2015, 09:35

Самое вкусное в tcl это команда trace - возможность повесить callback на изменение переменной (включая массив) очень удобно для GUI (эдакий MVC для бедных).

Ну и язык без ключевых слов вообще (но с ключевыми скобками) это круто.

bolknote.ru (bolknote.ru)
27 июня 2015, 12:22, ответ предназначен Сергею

Ну и язык без ключевых слов вообще (но с ключевыми скобками) это круто.
Ага, мне тоже это очень понравилось :)

Арефьев Тимур (инкогнито)
27 июня 2015, 18:34

Например, пишу в поиске "сова", найдено 0 заметок.

bolknote.ru (bolknote.ru)
27 июня 2015, 22:10, ответ предназначен Арефьеву Тимуру

Это не у меня сломалось что-то, а у Яндекса. Надо на Гугл переходить.

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)