Size: a a a

Сообщество Scheme

2020 November 19

P1

Peter 11111000000 in Сообщество Scheme
Tcl является программируемым языком программирования, таким как Lisp, в обоих можно писать новые структуры управления, а в более общем плане можно специализироваться на обоих языках. Но в то время как в Lisp обычно нужно писать макросы, в Tcl нужно писать обычные процедуры.
На Lisp есть типы, более или менее похожие на Python и Ruby. Например, чтобы использовать число в качестве аргумента функции манипулирования строками, необходимо произвести преобразование из одного типа в другой.
В Tcl сериализация происходит только для многих типов, потому что почти все имеет строковое представление. Вы можете записать список Tcl в файл, просто поместив $fd $list. Это невозможно в Lisp, где необходимо выполнить сериализацию.
Центральный тип данных на Lisp - это список, а центральный тип данных Tcl - строка. Tcl также широко использует списки, которые являются просто специальными строками. В современном мире наличие строк в качестве базового типа обычно более полезно, потому что многие думают, как HTML, XML, сетевые протоколы, о строках больше, чем о списках. Работа со строками в Lisp не так естественна, как с Tcl. С другой стороны, возможности списков на Tcl позволяют использовать многие парадигмы программирования, используемые в Lisp. Например, преобразовать строку в список символов, и манипулировать ею как списком, когда это удобнее.
Мир Tcl менее фрагментирован. Существует не большое количество реализаций Tcl, а также большая библиотека по умолчанию.
Tcl имеет встроенное событийно-ориентированное программирование, интегрированное с библиотекой ввода/вывода. Написать сложные сетевые программы, используя только то, что предусмотрено в языке ядра, настолько просто, что это забавно.
источник

P1

Peter 11111000000 in Сообщество Scheme
также есть мнение:

Необходимость писать макросы, а не процедуры в Lisps для мета-программирования - сознательная. Давным-давно, в древнем Лиспе, это делалось по методу TCL. Для работы с неизвестной формой интерпретатор вызывал определяемую программистом функцию, называемую "fexpr". Имея доступ к синтаксису, он мог придать ей любое значение.
Макросы работают при компиляции, а также обрабатывают интерпретационные ситуации. (Хотя и не все из них; некоторые трюки возможны с fexprs, так как они могут иметь доступ к содержимому лексического окружения среды исполнения и синтаксису одновременно, позволяя интерпретировать синтаксис так, чтобы он зависел от значения переменной во время исполнения).

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

b⛅

bouncepaw ⛅ in Сообщество Scheme
Aydar Zarifullin
Я тут вообще от нечего делать решил туториал по TCL прочитать...

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

MK

Mikhail Kirillov in Сообщество Scheme
Aydar Zarifullin
Я тут вообще от нечего делать решил туториал по TCL прочитать...

Есть ощущение схожести с лиспами
Мне erlang мерещиться лиспом, хотя я знаю что это не так. Для beam впрочем есть lfe и clojerl
источник

N

Nibeon in Сообщество Scheme
bouncepaw ⛅
тикль очень классный, мне понравился. Я писал на нём вспомогательные программы для моей настольной игры (надо бы доделать её, кстати)
👍
источник

PG

Pig Greenest in Сообщество Scheme
источник
2020 November 20

AZ

Aydar Zarifullin in Сообщество Scheme
Какая-то странная хрень: tinyscheme вываливается с no memory! (схемная функция вызывается 60 раз в секунду или больше). Может ли быть такое что сборщик мусора не успеввает освободить нужное количество cons ячеек?
источник

AZ

Aydar Zarifullin in Сообщество Scheme
В самом интерпретаторе утечек памяти нет вроде (валгриндом чекал)
источник

AK

Andrew Kravchuk in Сообщество Scheme
Вполне возможно. Там нельзя форсированно триггернуть сборку?
источник

AK

Andrew Kravchuk in Сообщество Scheme
Как в CL, (gc)
источник

MK

Mikhail Kirillov in Сообщество Scheme
источник

MK

Mikhail Kirillov in Сообщество Scheme
Теперь это возможно использовать на синкпадах
источник

AZ

Aydar Zarifullin in Сообщество Scheme
Andrew Kravchuk
Вполне возможно. Там нельзя форсированно триггернуть сборку?
Можно вроде, но я думаю забить... Что-нибудь другое заюзаю наверное (опять)
источник

AK

Andrew Kravchuk in Сообщество Scheme
Aydar Zarifullin
Можно вроде, но я думаю забить... Что-нибудь другое заюзаю наверное (опять)
👍
источник

AK

Andrew Kravchuk in Сообщество Scheme
(без иронии, есличо, сам так поступил в выборе дистрибутива линукса - лет этак восемь дистрохоппил, потом осел на генточке 😊)
источник

TT

Test For Test in Сообщество Scheme
Объясните пожалуйста чем scheme отличается от других функциональных языков и в чём его фичи?
источник

A

Aragaer in Сообщество Scheme
он разве функциональный?
источник

TT

Test For Test in Сообщество Scheme
Aragaer
он разве функциональный?
А разве нет?
источник

TT

Test For Test in Сообщество Scheme
Test For Test
Объясните пожалуйста чем scheme отличается от других функциональных языков и в чём его фичи?
К примеру чем scheme отличается от clojure?
источник

A

Aragaer in Сообщество Scheme
тут скорее вопрос "чем clojure отличается от обычных лиспов" и в частности иммутабельностью
источник