| 1.1, Аноним (-), 14:13, 12/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– | |
> сама техника может быть использована и просто в си-препроцессоре.
Поподробнее, как это на си? Функциональщина на си? Это был бы номер, в чемпионате перверсий от айти это было бы где-то в призовых местах :))
| | |
| |
| 2.5, Жироватт (ok), 14:17, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
Потому, что могут.
Осталось сделать заголовочник для моноидов и вообще, транспилятор из хаскелла в С, с сохранением монад
| | |
| 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 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– | |
> сама техника может быть использована и просто в си-препроцессоре.
Чего? 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-нотацию на шаблонах не сделать. Там же гибрид шаблонов и макросов.
| | |
|
|
| 2.28, Аноним (28), 15:08, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> А вы предлагаете техники из функциональных языков.
А внутри все равно обычная императивщина - так проц работает, не умеет он в эти твои монады-шмонады. А подобные финты давно в сишке в препроцессоре используются, ты просто йододефицитный и не знаешь об этом.
| | |
|
| |
| 2.17, Аноним (17), 14:50, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
они такого слова не знают! Надо говорить, успешной разгадки! :)
| | |
|
| |
| 2.21, Аноним (21), 14:54, 12/03/2026 [^] [^^] [^^^] [ответить]
| –2 +/– |
А как определите такое и будет. Можно передавать весь последующий код в DO блоке в функцию как лямбду. Но изначально было придумано для монад. В std::optional bind это тот же and_then. На основе bind можно сделать генераторы, корутины, разные монады (и не только монады).
| | |
| 2.24, Аноним (28), 15:00, 12/03/2026 [^] [^^] [^^^] [ответить]
| +3 +/– |
Это чтоб путаться с bind() из libc - биндить сокет к транспортному порту.
| | |
|
| 1.25, Аноним (26), 15:01, 12/03/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
Начнём с того, что за использование макросов без острой на то необходимости и 100% невозможности сделать по-другому с переиспользованием кода (и всяки свистелки перделки вроде do-нотаци сюда не катят, если не хочешь писать на C++ как на C++, то сиди уже на своей сишке, за си головного мозга, когда на си переизобретают фичи C++ на основе макросов или бойлерплейта кстати тоже надо гнать из профессии) надо гнать из профессии с волчьим билетом. Я прекрасно знаю что ranges недоделаны и ни один компилятор их не умеет оптимизировать, именно поэтому такие фичи должны быть частью ядра языка, а не частью стандартной библиотеки, всё равно новая стандартная библиотека без интринсиков компилятора работать не будет, зачем тогда выпендриваться с шаблонным метапрограммированием, чтобы компиляция была помедленнее и чтобы километровые портянки получать? Такие вещи должны быть first-class citizens языка, разумеется кодить их реализацию надо не на самом языке, а на специальном DSLе, который к сишке имеет такое же отношение, как микрокод процессора (процессоры оказались по сути очень кастрированными FPGA, блин, хотеть полноценный FPGA с полной интеграцией в процессор с полноценной компиляцией программ напрямую в микрокод, а ещё больше хотеть современный аналог трансметы на coarse-grained reconfigurable architecture, где code morphing крутится на арсенид-галлиевом высокоскоростном горячем ядре, а дальше микрооперации через сеть с коммутацией пакетов топологии "звезда" раскидываются по вычислительным блокам на низкой тактовой частоте (но их дохрена параллельных, и по самому тонкому техпроцессу, и к каждому - HBM), но в обычном режиме сеть большую часть времени работает как систолический массив) к машинному коду.
| | |
| |
| 2.30, Аноним (19), 15:10, 12/03/2026 [^] [^^] [^^^] [ответить]
| +2 +/– |
согласен, еще надо unsafe из раст выпилить, не умеешь safe - не берись
| | |
| |
| 3.32, Аноним (-), 15:14, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> согласен, еще надо unsafe из раст выпилить, не умеешь safe - не берись
Заодно и всю системщину на Rust зарубите как раз. Ну или как вы "safe" допустим адрес в DMA автомат вообще можете загнать? Это вообще - за пределами понимания компилера.
| | |
|
| 2.34, Аноним (8), 15:23, 12/03/2026 [^] [^^] [^^^] [ответить]
| +/– |
Так эта do-нотация и сделана в первую очередь для C++, а на C в таком виде её не сделать (можно сделать в другом). Тут добавлена новая фича в 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++ он в ядро пустит. Но спонсоры увидели выгоду только в расте.
| | |
|
|