1563
Обсуждение дизайна языков программирования (как новых, так и существующих). Литература: https://github.com/true-grue/Compiler-Development Создание и устройство компиляторов: @CompilerDev Для новичков: @pld_beginners
Компилятор (имею ввиду языковой сервер) мог бы ещё красным подсвечивать действия в коде коллбека, которые нарушают синтаксис или семантику языка
Читать полностью…
Блин, классная идея. Возьму её себе в язык
Читать полностью…
даже проще.f(n) => if n then f(n) else 42f(n) => if n then g(n) else 42; g(n) => if n then f(n) else 42
эти две f экстенсионально эквивалентны. более того, вторую можно переписать в первую без потери семантики, но решаема ли эта задача в общем случае?
Я тоже хочу разобраться в математике, можете накинуть, что мне нужно разобрать чтобы понимать вас?
Конкретные темы, вместо "иди учиться в школу", "учебник геометрии 7 класс"
Задача интенсиональной эквивалентности решается через введение нормальной формы.
Читать полностью…
И когда белые ящики, тоже нерешаемая. )
Читать полностью…
Если реализация поменялась, можно кинуть варн (даже на несходящиеся части внутри коллбека) и кинуть ошибку компиляции/впихнуть старую реализацию
Читать полностью…
диаграммы понятные, но очень любопытно, как так эта нотация хитро их описывает
Читать полностью…
понятия не имею. повторяю, это скопировано из https://raw.githubusercontent.com/marvinborner/optimal-effects/refs/heads/bachelor/thesis.pdf, страница 16
Читать полностью…
например, недавно вышел тезис Марвина Борнера про оптимальные эффекты через token-passing semantics. можно начать изучать этот тезис, который дает ссылки на другую литературу по эффектам в лямбда-исчислении.
https://raw.githubusercontent.com/marvinborner/optimal-effects/refs/heads/bachelor/thesis.pdf
но ваше развитие как PLD дизайнера начинается не с изобретения велосипеда, а с исследования prior art.
Читать полностью…
Скучно перекладывать жсоны на работе
Вообще это чисто исследовательский проект, для развлечения и моего развития как pld дезигнера
Господа!
В общем я тоже занимаюсь аутизмом в меру сил и делаю свой нескучный язык. Но я взял за основу уже существующий calculus (самое близкое это combinator calculus, но не оно)
Соответственно, у меня есть несколько правил редукции термов. Я захотелось мне сделать что-то похожее на ml, в том отношении, что мне не хочется полностью всё заворачивать в монады для io и мутабельности. Проблема тут в том, что в чистом исчислении такое не сделаешь без монад или их аналогов. Но! Я могу попробовать наворотить новых правил редукции. Я думал сделать прям отдельные правила, с отдельными "комбинаторами" типа seq или print и сделать их интринсиками. Мне не понравилось, по многим причинам, например потому что не скейлится. После обсуждений с чатомгпт пришли к такой схеме: оставить чистое исчисление, но кодировать специальные термы (он называл их request, но я предпочитаю opcode по аналогии с машинными инструкциями) структурно, а не номинально.
Пример: терм (который мы выбрали определенным образом, я написал рандомный) S K K I K S S это условно print, бинарный комбинатор и когда его встречает редусер, то он делает сайд-эффект. По такому принципу можно сделать и стейтменты, и io и даже мутации или лямбды (но там немного сложнее)
Вопрос: вы встречали языки которые так делают?
Только немножко в другом синтаксисе
Читать полностью…
МОжет пригодиться.
https://anton-k.github.io/ru-haskell-book/book/toc.html
+ ботов попытай вопросами, они могут подсказать.
Она не решается для всех случаев. Но, решается для некоторых частных случаев. Программисты решают частные случаи. Правда, иногда ошибаются 🙃
Читать полностью…
Но, проблема останова тоже нерешаемая... однако жеж живем и даже иногда работаем... )
Читать полностью…
Не решаема задача определения экстенсиональной эквивалентности. Нельзя определить эквивалентность двух черных ящиков с входом и выходом, когда каждый ящик — машина тьюринга.
Читать полностью…
Который указывает компилятору, как менять аст взятой функции
Читать полностью…
короче, не помню. когда-то просто из принципа научился читать нотацию Лафонта, но потом забыл из-за ненадобности. в тезисе диаграммы есть, а если хочется умственного онанизма, можно почитать Цицерона в оригинале, и то интереснее будет.
Читать полностью…
а чем отличаются скобки [] от скобок ()? этого тоже в Лафонтовской нотацией нет
Читать полностью…
а что такое ∘? по-моему этого не было в Лафонтовской нотации
потыкался в гпт с целью понять лафонтовскую нотацию 𝛿∘[𝑎(x1, … , x𝑛), 𝑎(y1, … , y𝑛)] ⋈ 𝑎[𝛿∘(x1, y1), … , 𝛿∘(x𝑛, y𝑛)], но это совершенно бестолковая затея, т.к. Т9 путается в показаниях и противоречит себе
может кто-то пояснить, как это правило соответствует этой диаграмме?
Да, поэтому такой вопрос и возник, относительно возможностей такого кодирования эффектов (и не только) через термы
Читать полностью…
Касаемо языка -- не хочется оставаться только с чистым исчислением, хочется сделать более императивный по форме язык, с сохранением функционального ядра. То есть я не против добавить seq mut и возможно ещё несколько стандартных императивных вещей, типа циклов
Читать полностью…
какую бизнес-проблему вы решаете?
Читать полностью…
вопрос: соответствует ли моё предположение реальности
Читать полностью…