Daniel
то есть - при создании нового указателя, структуры, слайса и мапы (все, вроде?) надо рядом с типом еще взвести флаг immutable, и дальше его при передаче копировать.
а компилятор пусть проверяет его
Daniel
aadz
слайсы
Daniel
слайсы тоже по значению, указатели и счетчики копируются
Roman
слайсы
слайс передаётся копией, но вот сам array под ним конечно не копируется
aadz
да, по ссылке передается
Daniel
в котрой есть указатель на массив
aadz
OK! пусть так
Roman
Roman
Daniel
чего именно ты не понимаешь?
Daniel
как компилятор типы проверяет при присваивании - понимаешь?
Roman
Потому что в твоём объяснении смешаны runtime & compile time
Daniel
нет, не смешаны вообще
Daniel
в рантайме мне никакой контроль мутабельности не нужен (пока?)
aadz
Блин, все же, может быть, не надо так глобально. Просто позволить пограммистам писать в определении функции модификатор const при параметре? Это - уже на тупых пользователей этой функции повлияет, и, наверное, этого достаточно было бы
Roman
aadz
пока существуют конпутеры и пограммисты - лучше не будет никак :)
Roman
Daniel
как обычно
aadz
И почему, кстати, все думают, что по умолчанию, каждый хочет отстрелить себе ногу и часами сидеть дебажить?
aadz
Хотя, часто видишь, что хотят, конечно :)
Daniel
никто не хочет, но за последние 5 лет я проделывал это дважды
Roman
И структура с поинтером на саму себя
Daniel
я проблемы не понимаю
Daniel
я бы хотел больше никогда не
aadz
не получится. Проблема слишком сложная, чтобы решить ее так просто
aadz
и не в иммутабельности проблема, в общем-то даже :)
Daniel
в с++ решили, и у нас можно
Daniel
есть несколько паттернов, которые реально помогают
Roman
Мне кажется, что иммутабельность ничего не даст
aadz
Roman
Daniel
Мне кажется, что иммутабельность ничего не даст
в каком смысле ничего?
класс редких, но очень неприятных ошибок она предотвращает полностью
map-reduce, когда он у нас появится, можно будет раскидывать по горутинам
оптимизатор сможет не вычислять одно и тоже по 100 раз
aadz
нет
const []int
Roman
нет
const []int
Это иммутабельный слайс, а я про слайс из иммутабельных объектов
Roman
И почему, кстати, все думают, что по умолчанию, каждый хочет отстрелить себе ногу и часами сидеть дебажить?
дело не в том что все хотят. Дело в том что это всё-равно часто происходят, потому-что наличие даже гениальной головы не гарантирует отсутствие ошибок. Поэтому у нас собственно и есть компиляторы, умные алгоритмы облегчающие нам жизнь дабы слишком голову стейтом не забивать.
самое страшное в том, что некоторые господа, привыкают городить врапер-структуры только для того чтоб защитить слайс от мутабельности и считают это нормальным отказываясь от const []byte
aadz
Roman
Roman
способность приспосабливаться к любым условиям это особенное качество человека... особенно хорошее и особенно плохое...
погрузи человека в нищиту и он привыкнет к ней и будет напрочь отрицать богатства. Погрузи человека в "плохой язык" (я с осторожностью, не буду конкретизироватрь) и он привыкнет на нём костылить
Roman
Daniel
да
aadz
Ну, надо сначала хотя бы начать с модификатора const при описании функции. А?
Roman
Окей, слайс из иммутабельных слайсов
Roman
то есть - при создании нового указателя, структуры, слайса и мапы (все, вроде?) надо рядом с типом еще взвести флаг immutable, и дальше его при передаче копировать.
а компилятор пусть проверяет его
aadz
Кстати, а чего это вы тут так разорались-то? lexx всем сказал идти работать! А вы чего?
Roman
Речь об этом флаге :)
Roman
aadz
Иногда сон - это тоже работа!
Roman
map [ const *Object ] const [] [] Object
мапа имутабельных слайсов мутабельных слайсов мутабельных структур типа Object, с имутабельным ключём типа указателя на структуру Object 😂
aadz
не надо так огород городить! Иначе это не проверить будет на этапе компиляции
aadz
Надо, если сказано const, то шаг влево, шаг вправо - до свидания по поводу всей переменной
Roman
[] const [] int
Угу. Мапа иммутабельных слайсов содержащая иммутабельные структуры
Roman
aadz
как-то я думаю, что не сможет, но думать и рассказывать лень :( Ночь на дворе
Roman
Roman
Roman
aadz
угу
aadz
не флага, а модификатора
Roman
aadz
хоть это - одно и то же
aadz
угу
Roman
"спецификатором" если верить гугл переводчику
Daniel
или так, да
Roman
по крайней мере в C++ const это qualifier
Roman
Ммм, а как это все будет жить с unsafe?
Daniel
параллельно