| 1.1, Аноним (-), 14:13, 12/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– | |
> сама техника может быть использована и просто в си-препроцессоре.
Поподробнее, как это на си? Функциональщина на си? Это был бы номер, в чемпионате перверсий от айти это было бы где-то в призовых местах :))
| | |
| |
| 2.5, Жироватт (ok), 14:17, 12/03/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
Потому, что могут.
Осталось сделать заголовочник для моноидов и вообще, транспилятор из хаскелла в С, с сохранением монад
| | |
| 2.8, Аноним (8), 14:22, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
Про технику это не про do-нотацию. Там другая техника. Она про то, как посреди произвольного кода вставлять ключевые слова для макросного DSL. И уже на основе этого можно делать другие DSL.
| | |
| |
| 3.9, Аноним (8), 14:27, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
(если просто определить макросы напрямую, то парсинг будет сильно ограничен, тогда как с этой техникой оно становится намного гибке)
| | |
|
|
| 1.10, Аноним (10), 14:28, 12/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –3 +/– | |
> сама техника может быть использована и просто в си-препроцессоре.
Чего? do-нотация в СИ?
Они только недавно в C23 смогли осилить Predefined Boolean constants.
А вы предлагаете техники из функциональных языков.
Пожалейте йододефицитных, это ж им мозг сломает))
| | |
| |
| 2.14, Аноним (8), 14:33, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
Техника это не сама do-нотация, а техника парсинга. Чтобы делать другие DSL. Но можно попробовать и do-нотацию сделать попробовать, но там немного другой вид будет (т.к. в си лямбд нет обычно, придется через макросы разбивать на несколько функций и строить цепочки вызовов, так ещё и захваты переменных придётся руками прописывать)
| | |
| |
| 3.26, Аноним (26), 15:03, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
техника парсинга нафиг не нужна, есть ctll на основе шаблонов, а не на осонове макросов, уродующих AST самой программы, в результате чего написано одно, а делает программа другое, потому что шаблоны втихаря воруют исходник и меняют его на подделку.
| | |
| |
| 4.35, Аноним (8), 15:26, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
Если бы всё было так просто... Шаблоны это, разумеется, хорошо (и в том репозитории они активно применяются), но могут то они далеко не всё. В таком виде (и в целом в юзабельном) do-нотацию на шаблонах не сделать. Там же гибрид шаблонов и макросов.
| | |
| 4.47, Аноним (47), 16:04, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
Ого, не знал. У нас на работе как раз используют макросы, нужно будет поручить прекратить это.
| | |
|
|
| 2.28, Аноним (28), 15:08, 12/03/2026 [^] [^^] [^^^] [ответить]
| –1 +/– | |
> А вы предлагаете техники из функциональных языков.
А внутри все равно обычная императивщина - так проц работает, не умеет он в эти твои монады-шмонады. А подобные финты давно в сишке в препроцессоре используются, ты просто йододефицитный и не знаешь об этом.
| | |
| 2.70, Аноним (70), 17:30, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
Да уж куда им, не то что вы, продвинутые - операцию на глаза через опу делаете.
| | |
|
| |
| 2.17, Аноним (17), 14:50, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
они такого слова не знают! Надо говорить, успешной разгадки! :)
| | |
|
| |
| 2.21, Аноним (21), 14:54, 12/03/2026 [^] [^^] [^^^] [ответить]
| –1 +/– |
А как определите такое и будет. Можно передавать весь последующий код в DO блоке в функцию как лямбду. Но изначально было придумано для монад. В std::optional bind это тот же and_then. На основе bind можно сделать генераторы, корутины, разные монады (и не только монады).
| | |
| 2.24, Аноним (28), 15:00, 12/03/2026 [^] [^^] [^^^] [ответить]
| +3 +/– |
Это чтоб путаться с bind() из libc - биндить сокет к транспортному порту.
| | |
| |
| 3.51, Аноним (17), 16:10, 12/03/2026 [^] [^^] [^^^] [ответить]
| –5 +/– |
это просто д*билы позикса используют в именах функций обобщенные многозначные термины (понятия). Там по факту должно было быть нечто bind_socket или socket_bind, лучше sys_socket_bind, что говорит о sys/socket.h.
| | |
| |
| 4.52, Аноним (28), 16:17, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
Кто первый встал, того и тапки. Так что пусть плюсовики меняют имя на std::BindGeneratesAForwardingCallWrapperForAGivenFunctionOrCallableObject()
| | |
| |
| 5.55, Аноним (28), 16:21, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
А если без шуток, и в позиксе *билы, которые используют в именах функций обобщенные многозначные термины (понятия), то кто тогда коммитет плюсовиков, если они делают так же? По факту должно быть std::functional_bind, что говорит о <functional>
| | |
| |
| 6.56, Аноним (8), 16:22, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
Так а тут в проекте используется и не std::bind. А другая функция. Там она определяется в неймспейсе doletis. И означает монадическое связывание
| | |
|
|
|
|
|
| 1.25, Аноним (26), 15:01, 12/03/2026 [ответить] [﹢﹢﹢] [ · · · ] | +4 +/– | Начнём с того, что за использование макросов без острой на то необходимости и 10... большой текст свёрнут, показать | | |
| |
| 2.30, Аноним (19), 15:10, 12/03/2026 [^] [^^] [^^^] [ответить]
| +2 +/– |
согласен, еще надо unsafe из раст выпилить, не умеешь safe - не берись
| | |
| |
| 3.32, Аноним (-), 15:14, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> согласен, еще надо unsafe из раст выпилить, не умеешь safe - не берись
Заодно и всю системщину на Rust зарубите как раз. Ну или как вы "safe" допустим адрес в DMA автомат вообще можете загнать? Это вообще - за пределами понимания компилера.
| | |
| |
| 4.62, Аноним (19), 16:39, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
это был сарказм на предложение выпилить целый язык (препроцессор) из си
| | |
|
|
| 2.34, Аноним (8), 15:23, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
Так эта do-нотация и сделана в первую очередь для C++, а на C в таком виде её не сделать (можно сделать в другом). Тут добавлена новая фича в C++, которой раньше в нём не было (корутины достаточно ограничены)
| | |
| |
| 3.42, аролп5 (?), 15:56, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
В go - горутины
В Kotlin - корутины
В C++ - должны быть сирутины 😁
| | |
|
|
| 1.33, Аноним (39), 15:19, 12/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– | |
> В представленном проекте реализована новая техника для парсинга DSL, что может поспособствовать созданию дальнейших DSL на препроцессоре C и C++.
Раз Торвальц не пускает C++ в ядро, то превратим этим способом C в C_with_classes для ядра.
| | |
| |
| 2.38, Аноним (38), 15:40, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
Вангую что подобные выкрутасы Торвальдс тоже не пропустит. А если надо, то C++ он в ядро пустит. Но спонсоры увидели выгоду только в расте.
| | |
|
| |
| 2.44, Аноним (59), 15:58, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
Когда сишники не хотят переходить на раст, то раст переходит в си.
| | |
| |
| 3.58, warlock66613 (ok), 16:28, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
В Rust как раз нет в явном виде монад и нет do-нотации. Может когда-нибудь и появятся -- я бы этого исключать не стал -- но не в ближайшем будущем.
| | |
|
|
| 1.48, Анлним (?), 16:05, 12/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Препроцессор это как goto.
Путает, тяжело разбирать, разводит много хаков которые тяжело проверить.
И это одна из причин почему раст должен умереть.
| | |
| 1.61, Rodegast (ok), 16:38, 12/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> который работает как do-нотация из функциональных языков
Там монад нету, зачем им do-нотация?
| | |
| |
| 2.63, Аноним (8), 16:42, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
В std::optional с C++23 есть монадический интерфейс (and_then), в std::expected тоже. Вот и можно для них использовать do-нотацию. Можно и не только для них и не только для монад. В репе есть пример с генераторами, которые не через монады сделаны, но через do-нотацию.
| | |
| |
| 3.72, Rodegast (ok), 17:34, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
> В std::optional с C++23 есть монадический интерфейс (and_then), в std::expected тоже
Зачем в императивном языке со строгой семантикой нужны монады?
| | |
|
|
| 1.71, Аноним (70), 17:32, 12/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Когда функциональщики внезапно поняли что наделали дичи, они изобрели монады. И они молодцы. А те кто монады тянет в си подобные языки, их лечить надо.
| | |
|