ChatCrawlerпоиск по публичному Telegram Открыть приложение
P

Programming Language Design

1 722 участников
2 августа 2026
Y
だーく ほーるИ в целом у нас получается typeof(тернарник) = Obj | Obj&
ну через | задавать в общем случае эт такое себе. а только для тернарника это делать с зависимостью от итогового это какие то костыли. тогда уж можно запретить прямой вывод типов для такого вида выражений (или сделать его непрямым).
A
だーく ほーるЭээ, а как cow ломает саунднесс🤔
AutoCoW как например в Swift — однозначно. Это совершенно непредсказуемое поведение компилятора, когда он везде и всегда заворачивает всё в CoW, за исключением ситуаций когда не заворачивает. Это полностью ломает мутабельность, ибо много непредсказуемых ситуаций, меняющихся от версии к версии реализации компилятора.
А
А
Alex 🫣AutoCoW как например в Swift — однозначно. Это совершенно непредсказуемое поведение компилятора, когда он везде и всегда заворачивает всё в CoW, за исключением ситуаций когда не заворачивает. Это полностью ломает мутабельность, ибо много непредсказуемых ситуаций, меняющихся от ве
Вы что-то путаете, там cow явный через функцию isKnownUniquelyReferenced которая внутри просто смотрит на счетчик сильных ссылок. Cow явно обозначен в стд либе и есть только у трех коллекций в ней. А у просто структур и даже циклических indirect enum никакого встроенного cow нет. Это если мы говорим о cow как о термине который вводят авторы swift.
Alex 🫣AutoCoW как например в Swift — однозначно. Это совершенно непредсказуемое поведение компилятора, когда он везде и всегда заворачивает всё в CoW, за исключением ситуаций когда не заворачивает. Это полностью ломает мутабельность, ибо много непредсказуемых ситуаций, меняющихся от ве
Если вы про ситуацию при копировании обычных структур, то там оптимизация копии не часть семантики и закладываться на это не нужно. А если нужно явно убрать копии у value типов, то нужно использовать consume и inout/borrowing/consuming
А
Но термина AutoCoW у них нет
Y
может хочет кто вместе яп новый пилить? чот в одиночку грустно да и опыт командной разработки нужен
A
АндрейЕсли вы про ситуацию при копировании обычных структур, то там оптимизация копии не часть семантики и закладываться на это не нужно. А если нужно явно убрать копии у value типов, то нужно использовать consume и inout/borrowing/consuming
Вы же понимаете, что это костыль, появившийся, кстати, позже чем вот это неявное копирование всего. Если что, я не апологет Очевидности и чаще многих употребляю RTFM, но эту непредсказуемую навязываемую неявность (далеко не только в Свифте) не могу назвать адекватной, рациональной и часто управляемой. Пример помню... Есть значение типа Опшнл КакаятоСтруктура. Нужно прям тут изменить значение одного из полей структуры. Очевидный struct?.field = 11 вариант, на сколько помню, приводит к копированию на матчинге внутри сахара и новое значение пишется в копию, которая сразу и удаляется.
Архив по месяцам
Открыть в Telegram Каталог площадок Искать в ChatCrawler

Слепок открытой публичной ленты из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог