Size: a a a

Эликсир и Вунш

2019 August 26

TT

Taras 🦀 Taraskin in Эликсир и Вунш
тут не такая простая оптимизация
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
но gc-шка поймать по идее должна тот список довольно быстро.
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
вопрос конечно, будет ли оно автоматически переиспользоваться, если заранее известно, что ссылок на тот список больше нет — не знаю
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
тут зависит от менеджера памяти и хитрозадости вм
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
ну и компилятора тоже
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
вроде тесты где-то видел
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
ну тесты тестами
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
и на эликсире, и на эрланге
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
раньше само собой так и было
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
но в теории тут можно пооптимизировать управление памятью
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
ну когда ты в начало списка добавляешь, там все просто — [a | tail]. у тебя два указателя — на весь список и на tail
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
т.е. tail по построению является частью общего списка, и это иммутабельность гарантирует
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
в итоге у тебя остается только два указателя
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
а вот когда list1 ++ list2, ты потом можешь обратиться к list1
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
и да, просто так in-place ты не можешь последний указатель направить тупо на list2
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
но в теории, компилятор может проанализировать и выяснить, что нигде дальше ты list1 не используешь (если ты его действительно не используешь, конечно)
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
тогда значит, что этот list1 можно уже вообще просто вырезать и все
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
ну а раз его вырезать можно, тогда значит он и не особо нужен, а значит в нем можно указатель с последнего элемента поменять
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
но это такое. щас найду как списки в эрланге представляются
источник

TT

Taras 🦀 Taraskin in Эликсир и Вунш
по идее тут не в этом дело
источник