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

с пушами и инсёртами этими обфускация хорошая получается

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

Programming Language Design

есть локальный скоуп или его аналог? чтобы переписать a * b * (c * d * (e * f * g) * h * i) * k * l в виде примерно { let efg := e * f * g; let cdhi := c * d * efg * h * i; a * b * cdhi * k * l }

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

Programming Language Design

У меня вдруг возник вопрос:

А как соотносятся зипперы (ФП) и паттерн-матчинг?

Спашиваю ибо у меня в языке это как будто одно и тоже 🤔

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

Programming Language Design

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

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

Programming Language Design

да-да, я понял. непосредственно сам язык напоминает КЗГ

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

Programming Language Design

атомы — терминалы, переменные — нетерминалы. плюс типизация

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

Programming Language Design

Если знаете парсер Пратта то вот по поводу моего варианта:
/channel/LanguageDev/251239

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

Programming Language Design

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

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

Programming Language Design

пожалуй что да, интересная концепция

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

Programming Language Design

Вы хотели бы участвовать в группе по моему языку?

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

Programming Language Design

(делал так в своём языке)

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

Programming Language Design

Больше того, если посмотреть на статьи про АОП, то можно заметить, что оно и придумано _для_того_, чтобы менять свойства частей программы.

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

Programming Language Design

Disable кнопки — это только с целью UX/usability, в том случае, если повторные нажатия не имеют смысла в течении некоторого таймаута.

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

Programming Language Design

единственное, что при таком подходе, как я предложил, потребуется редукция не синтаксическая, а на значениях. как сейчас сделано?

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

Programming Language Design

А я не могу понять почему я тащусь от этого подхода, хотя естественно у него есть недостатки

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

Programming Language Design

А как тебе мысль поменять звёздочку и точку местами?

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

Programming Language Design

Можем обсудить как сделать более читабельно 😏

Можете пожалуйста привести пример того что вам с трудом читается и почему?

Мне не особо важно какой будет синтаксис на самом деле. Но мне важна максимальная линейность нотации — я бы использовал s-expr, но там можно потеряться к скобках. Да и язык у меня по сути работает с последовательностями. Я показывал что можно хоть
++++++++
писать, не смотря на то что + это инфикс.

Ещё можно по разному строить выражения. Например имеется значение:

a * b * (c * d * (e * f * g) * h * i) * k * l

Его можно построить иначе:

[a; b]
* push [c; d; h; i]
* insert
. after [2; 2]
. [e; f; g]
* push [k; l]
* combine


Я всё больше подумываю оставить в языке только этот вариант. Он больше соответствует идее/концепции, чем первый —
то есть вместо вложенных скобок (любых) использовать только подобные конструкции с использованием одномерных кортежей или "одномерных скобок", а также мультиметоды в инфиксной форме (пробел, точка, звёздочка, плюс) и значений вроде push, insert и т.п.

Я открыт к предложениям🤗

UPD: исправил второй вариант — была лишняя строчка

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

Programming Language Design

в рамках дешугаринга

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

Programming Language Design

Вы кстати уже не первый кто сравнивает мой язык с БНФ.

Но я не думал о том чтобы сделать его таким - как-то само получилось)

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

Programming Language Design

ну если так то да)

Но для разбора моего языка КЗГ не нужна

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

Programming Language Design

я про арифметические и не говорил. похоже на набор правил БНФ
a B c ::= d e F G h I

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

Programming Language Design

да нет, тут грамматика не многим сложнее чем у арифметических выражений.

Парсер Пратта знаете?

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

Programming Language Design

Вдохновлённая химией и молекулярной биологией

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

Programming Language Design

а, понял. прям так. f * 1 * #i-want-int

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

Programming Language Design

Нет, но у меня есть класс специальных значений, которые я называю тегами - вот как раз для таких случаев.

let f * (i : Int) * #i-want-int : Int := ...; 
let f * (i : Int) * #i-want-string : String := ...;

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

Programming Language Design

А вот так не получится🤷‍♂️

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

Programming Language Design

Что-то у меня не получилось найти, с чего тема про аспекты началась, но хотелось бы заметить, что АОП это по сути частный случай метапрограммирования.
Навешивание логирующего аспекта на фрагмент программы ни по смысловой нагрузке ни по семантике ничем не отличается от ручного раскидывания вызова логирующей функции по коду.
В зависимости от способа реализации АОПшные аспекты могут функционировать как угодно - встраиваться в цепочку вызовов статически или динамически, переписывать код как макросы на котором-то уровне абстракции, и т.д.
В конечном счёте они являются просто ещё одним способом абстракции и обобщения элементов поведения программы. Поэтому они по определению должны и будут влиять на семантику программы - в общем случае. Поэтому мне глубоко непонятны все эти рассуждения о "правильности"/"неправильности"/"корректности"/"некорректности" аспектов.
Написали реализацию, зависящую от нелокального состояния - получили внезапные эффекты при нарушении ожидаемого порядка выполнения. Не важно, каким способом мы это в программу принесли. Это прямое логическое следствие, вытекающее из природы сущности.

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

Programming Language Design

Так и я об этом: порядок вызовов не определен из-за асинхронности (обработчики вызываются в ответ на события, и порядок этих событий определен весьма частично).

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