Size: a a a

Compiler Development

2020 February 01

M

MaxGraey in Compiler Development
MaxGraey
Это можно было бы через hash таблицы конечно же:
var a = table({ b: 1 })
a.set({ foo: a })
a.set({ foo: table({ foo: a.b }) })
Собственно приходим к тому, как это устроено в Lua, где все работает через хэш таблицы
источник

AV

Alexander Vershilov in Compiler Development
Я может очень плохо объясняюсь, но я начинал с того, что в динамике, в каждом языке есть обобщенное представление типов и любое динамическое значение преставимо в этом виде
источник

AV

Alexander Vershilov in Compiler Development
А когда мы хотим динамическую библиотеку в статике, то это можно повторить, понятным, хоть и не быстрым способом
источник

AV

Alexander Vershilov in Compiler Development
Обычно подобный тип будет состоять из следующего:
1. примитивные типы
2. список
3. хеш таблица
4. лябмды
В дополнение там может быть мета-информация для описания runtime "системы типов", информация о полях, наследниках, вхождению в множества. Тут всё определяется лишь желанием выражать определенные ограничения
источник

M

MaxGraey in Compiler Development
Alexander Vershilov
Я может очень плохо объясняюсь, но я начинал с того, что в динамике, в каждом языке есть обобщенное представление типов и любое динамическое значение преставимо в этом виде
Для этого весь язык должен это поддерживать, то есть усеть любой объект превращать в Variant ну или хотя бы иметь механизмы рефлексии, что бы это можно было сделать вручную
источник

M

MaxGraey in Compiler Development
мета-информация это и есть рефлексия и не каждый ЯП этим обладает
источник

K

Kir in Compiler Development
Alexander Vershilov
Обычно подобный тип будет состоять из следующего:
1. примитивные типы
2. список
3. хеш таблица
4. лябмды
В дополнение там может быть мета-информация для описания runtime "системы типов", информация о полях, наследниках, вхождению в множества. Тут всё определяется лишь желанием выражать определенные ограничения
Туда б ещё ADT сунуть
источник

AV

Alexander Vershilov in Compiler Development
Kir
Туда б ещё ADT сунуть
1-4 выражается через ADT, а сами ADT это "бонус"
источник

AV

Alexander Vershilov in Compiler Development
Далеко не везде они есть
источник

K

Kir in Compiler Development
И лучше разделять AST и runtime Values.

Я имею ввиду, в сам динамический язык
источник

AV

Alexander Vershilov in Compiler Development
MaxGraey
Для этого весь язык должен это поддерживать, то есть усеть любой объект превращать в Variant ну или хотя бы иметь механизмы рефлексии, что бы это можно было сделать вручную
Поскольку в статическом языке типов много, а не 1, то да - надо. Имхо лучшее средство это класс/трейт который умеет отображать тип в "Dynamic" тип и обратно
источник

AV

Alexander Vershilov in Compiler Development
Ладно, мне идти надо, буду готов продолжить дискуссию вечером, может с примерами конкретными
источник

BD

Berkus Decker in Compiler Development
ilya sheprut @optozorax
Кто-нибудь уже делал языки программирования на макросах раста?
есть DSL-и всякие д
источник

BD

Berkus Decker in Compiler Development
warp_dsl, diesel_dsl вот это всё
источник

is

ilya sheprut @optozorax in Compiler Development
Berkus Decker
warp_dsl, diesel_dsl вот это всё
спасибо, посмотрю)
источник

BD

Berkus Decker in Compiler Development
ilya sheprut @optozorax
спасибо, посмотрю)
не, смотреть лучше вот так https://lib.rs/keywords/dsl
источник

TC

Tom Cauf in Compiler Development
Dmitry Ponyatov
можно языки метапрограммирования, маловато будет
вот они как раз должны быть только диманическими
Есть же лисп, не?
источник

TC

Tom Cauf in Compiler Development
Михаил Бахтерев
Ну. Вот физики написали себе Julia. Очень ей довольны. Думаю, если целевая аудитория загружена другой математикой, то им заходят динамические языки, потому что не надо вкладывать существенные усилия ещё и в сложную теорию языка (и не интересно, и времени нет). Ещё подтверждения гипотезы: математики написали себе Sage на Python, у числовых теоретиков популярна Scheme, датасаейнтисты сидят в Python, финжиры используют APL.
Кто такие финжиры?
источник

МБ

Михаил Бахтерев in Compiler Development
Tom Cauf
Кто такие финжиры?
финансовые инженеры
источник

KR

K R in Compiler Development
Михаил Бахтерев
Ну. Вот физики написали себе Julia. Очень ей довольны. Думаю, если целевая аудитория загружена другой математикой, то им заходят динамические языки, потому что не надо вкладывать существенные усилия ещё и в сложную теорию языка (и не интересно, и времени нет). Ещё подтверждения гипотезы: математики написали себе Sage на Python, у числовых теоретиков популярна Scheme, датасаейнтисты сидят в Python, финжиры используют APL.
Когда вы работаете с Notebook, вам желательно даже, чтобы интерпретатор переваривал частично некорректные программы.

Ветвлений там почти нет, программа целиком проверяется одним запуском.

Поэтому Хаскель, а уж тем более Цэ там хуже Питона.
источник