170 похожих чатов

Я правильно понял, что разница в результатах выше из нашей

беседы состоит в том что iadd в случае с листом у нас in place, а в случае с i который у меня в классе не in place, так ведь ?

6 ответов

4 просмотра

Да.

Ilya- Автор вопроса
evle
Да.

по идеи, могли бы и для чисел сделать ведь in place. Мне кажется разница диктуется тем, что под копытом. Числа и прочие атомы (или маленькие объектики) не жалко делать не in place, а вот листы и прочее уже все in place. Если не лезть, а так интуитивно "угадать".

Ilya
по идеи, могли бы и для чисел сделать ведь in plac...

Это сильно реализацию перекраивать, так что не могли бы. Сильно в теории да, но деление на mutable/immutable сквозит через всю спецификацию языка.

Ilya- Автор вопроса

ну в теории если язык с нуля строить, то там хлопот даже меньше, чем так как сейчас помоему. Вот у вас есть целое число, допустим в системе 32 bit для простоты и у него есть адрес икс. Берешь число, кладешь в регистр, добавляешь к нему 1, кладешь обратно в память в тот же адресс, вот оно и in place. один read из памяти, один write в память (их не избежать по любому). А не in place как бы сложнее, так как переменная это всего лишь ссылка, то в случае не in place я подозреваю что делается оно так: читаешь из память значение из адресса икс, кладешь в регистр, добавляешь 1 (значение), теперь берешь другой новый адрес, и туда кладешь новое значение, а переменную указываешь на новый адрес, вот оно не in place. То есть в первое случае не надо просить у ОС нового адреса, можно использовать ту же ячейку. Иначе говоря, похоже что выбор mutable/immutable он условен, вроде как все типы могли бы быть mutable грубо говоря. Но я не настолько глубоко знаю питон, немного сейчас углубляюсь в его теорию, хочется принципы понимать.

Ilya
ну в теории если язык с нуля строить, то там хлопо...

Не, не могли бы. Всё куда сложнее и запутанее. Как только всё становится mutable, можно начать махать ручкой хэшируемости, словарям и прочему. Технически оно не сломается, но на практике будет боль и страдание.

Ilya- Автор вопроса
evle
Не, не могли бы. Всё куда сложнее и запутанее. Как...

а ну вот в этом и причина, хай левел да

Похожие вопросы

Обсуждают сегодня

Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
было так ;void set_http_ver(RESPD* ptr, char* version, uint32_t length) // example: 'RTSP/1.1 ' set_http_ver: mov eax, [esp + 4] mov ecx, [esp + 8] ...
Mixail Frolov
5
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
Code Explorer / обновление содержимого окна, задержка - задержка, по моему, слишком большая, примерно 1 сек, хотелось-бы установить - макс. быстро - в настройках ide не нашел...
livontiy
1
Карта сайта