languagedev | Unsorted

Telegram-канал languagedev - Programming Language Design

1563

Обсуждение дизайна языков программирования (как новых, так и существующих). Литература: https://github.com/true-grue/Compiler-Development Создание и устройство компиляторов: @CompilerDev Для новичков: @pld_beginners

Subscribe to a channel

Programming Language Design

Компилятор (имею ввиду языковой сервер) мог бы ещё красным подсвечивать действия в коде коллбека, которые нарушают синтаксис или семантику языка

Читать полностью…

Programming Language Design

Блин, классная идея. Возьму её себе в язык

Читать полностью…

Programming Language Design

даже проще.
f(n) => if n then f(n) else 42
f(n) => if n then g(n) else 42; g(n) => if n then f(n) else 42
эти две f экстенсионально эквивалентны. более того, вторую можно переписать в первую без потери семантики, но решаема ли эта задача в общем случае?

Читать полностью…

Programming Language Design

Я тоже хочу разобраться в математике, можете накинуть, что мне нужно разобрать чтобы понимать вас?
Конкретные темы, вместо "иди учиться в школу", "учебник геометрии 7 класс"

Читать полностью…

Programming Language Design

Задача интенсиональной эквивалентности решается через введение нормальной формы.

Читать полностью…

Programming Language Design

И когда белые ящики, тоже нерешаемая. )

Читать полностью…

Programming Language Design

Если реализация поменялась, можно кинуть варн (даже на несходящиеся части внутри коллбека) и кинуть ошибку компиляции/впихнуть старую реализацию

Читать полностью…

Programming Language Design

диаграммы понятные, но очень любопытно, как так эта нотация хитро их описывает

Читать полностью…

Programming Language Design

понятия не имею. повторяю, это скопировано из https://raw.githubusercontent.com/marvinborner/optimal-effects/refs/heads/bachelor/thesis.pdf, страница 16

Читать полностью…

Programming Language Design

из пдфки так скопировалось

Читать полностью…

Programming Language Design

оно ведь соответствует ей, да?

Читать полностью…

Programming Language Design

например, недавно вышел тезис Марвина Борнера про оптимальные эффекты через token-passing semantics. можно начать изучать этот тезис, который дает ссылки на другую литературу по эффектам в лямбда-исчислении.
https://raw.githubusercontent.com/marvinborner/optimal-effects/refs/heads/bachelor/thesis.pdf

Читать полностью…

Programming Language Design

но ваше развитие как PLD дизайнера начинается не с изобретения велосипеда, а с исследования prior art.

Читать полностью…

Programming Language Design

Скучно перекладывать жсоны на работе

Вообще это чисто исследовательский проект, для развлечения и моего развития как pld дезигнера

Читать полностью…

Programming Language Design

Господа!

В общем я тоже занимаюсь аутизмом в меру сил и делаю свой нескучный язык. Но я взял за основу уже существующий calculus (самое близкое это combinator calculus, но не оно)

Соответственно, у меня есть несколько правил редукции термов. Я захотелось мне сделать что-то похожее на ml, в том отношении, что мне не хочется полностью всё заворачивать в монады для io и мутабельности. Проблема тут в том, что в чистом исчислении такое не сделаешь без монад или их аналогов. Но! Я могу попробовать наворотить новых правил редукции. Я думал сделать прям отдельные правила, с отдельными "комбинаторами" типа seq или print и сделать их интринсиками. Мне не понравилось, по многим причинам, например потому что не скейлится. После обсуждений с чатомгпт пришли к такой схеме: оставить чистое исчисление, но кодировать специальные термы (он называл их request, но я предпочитаю opcode по аналогии с машинными инструкциями) структурно, а не номинально.

Пример: терм (который мы выбрали определенным образом, я написал рандомный) S K K I K S S это условно print, бинарный комбинатор и когда его встречает редусер, то он делает сайд-эффект. По такому принципу можно сделать и стейтменты, и io и даже мутации или лямбды (но там немного сложнее)

Вопрос: вы встречали языки которые так делают?

Читать полностью…

Programming Language Design

Только немножко в другом синтаксисе

Читать полностью…

Programming Language Design

МОжет пригодиться.
https://anton-k.github.io/ru-haskell-book/book/toc.html

+ ботов попытай вопросами, они могут подсказать.

Читать полностью…

Programming Language Design

Она не решается для всех случаев. Но, решается для некоторых частных случаев. Программисты решают частные случаи. Правда, иногда ошибаются 🙃

Читать полностью…

Programming Language Design

что делать с корекурсией?

Читать полностью…

Programming Language Design

Но, проблема останова тоже нерешаемая... однако жеж живем и даже иногда работаем... )

Читать полностью…

Programming Language Design

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

Читать полностью…

Programming Language Design

Который указывает компилятору, как менять аст взятой функции

Читать полностью…

Programming Language Design

короче, не помню. когда-то просто из принципа научился читать нотацию Лафонта, но потом забыл из-за ненадобности. в тезисе диаграммы есть, а если хочется умственного онанизма, можно почитать Цицерона в оригинале, и то интереснее будет.

Читать полностью…

Programming Language Design

а чем отличаются скобки [] от скобок ()? этого тоже в Лафонтовской нотацией нет

Читать полностью…

Programming Language Design

а что такое ∘? по-моему этого не было в Лафонтовской нотации

Читать полностью…

Programming Language Design

потыкался в гпт с целью понять лафонтовскую нотацию 𝛿∘[𝑎(x1, … , x𝑛), 𝑎(y1, … , y𝑛)] ⋈ 𝑎[𝛿∘(x1, y1), … , 𝛿∘(x𝑛, y𝑛)], но это совершенно бестолковая затея, т.к. Т9 путается в показаниях и противоречит себе
может кто-то пояснить, как это правило соответствует этой диаграмме?

Читать полностью…

Programming Language Design

Да, поэтому такой вопрос и возник, относительно возможностей такого кодирования эффектов (и не только) через термы

Читать полностью…

Programming Language Design

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

Читать полностью…

Programming Language Design

какую бизнес-проблему вы решаете?

Читать полностью…

Programming Language Design

вопрос: соответствует ли моё предположение реальности

Читать полностью…
Subscribe to a channel