Size: a a a

2020 June 24

VS

Vasily Shapenko in F# Chat
В головах у людей явно каша
источник

VS

Vasily Shapenko in F# Chat
И хорошо, если гречневая
источник

IC

Ilya L Che in F# Chat
Ivan Balanar
Т.к. листы в F# иммутейбл, нет ли каких-нибудь оптимизаций при конкатенации двух листов, которые эффективно предотвращают выделение памяти под копию суммы листов?
А зачем тебе выделять память при сложении списков? Они ж односвязные. Подцепил начало второго к концу первого, и всё.
источник

IB

Ivan Balanar in F# Chat
Vasily Shapenko
С чего ты взял, что там будет выделение памяти?
ну на первый взгляд конкатенация может быть создана так - последний элемент первого листа получает указатель на первый элемент второго листа. Но тогда а) какие же тогда листы иммутабельные, если меняются? Или иммутабельность только для листов, а не элементов и б) тогда для конкатенации первого листа со вторым и первого листа с третьим последний элемент должен хранить одновременно две ссылки - на второй лист и на третий.
источник

AH

Ayrat Hudaygulov in F# Chat
Ilya L Che
А зачем тебе выделять память при сложении списков? Они ж односвязные. Подцепил начало второго к концу первого, и всё.
Так не получится
источник

AH

Ayrat Hudaygulov in F# Chat
Мне кажется тут кто-то что-то не понимает
источник

IB

Ivan Balanar in F# Chat
читаю первые страницы сайма. не понимаю много чего.
источник

AH

Ayrat Hudaygulov in F# Chat
Ilya L Che
А зачем тебе выделять память при сложении списков? Они ж односвязные. Подцепил начало второго к концу первого, и всё.
Ты мутируешь первый лист таким образом
источник

IC

Ilya L Che in F# Chat
Хм, тоже верно.
источник

AH

Ayrat Hudaygulov in F# Chat
Vladimir Shchur
да, там не будет копии листов
С чего бы? Копия первого должна быть
источник

DB

Denis Bobrov in F# Chat
вообще, говорят что крутые парни не юзают листы
источник

IC

Ilya L Che in F# Chat
Ivan Balanar
ну на первый взгляд конкатенация может быть создана так - последний элемент первого листа получает указатель на первый элемент второго листа. Но тогда а) какие же тогда листы иммутабельные, если меняются? Или иммутабельность только для листов, а не элементов и б) тогда для конкатенации первого листа со вторым и первого листа с третьим последний элемент должен хранить одновременно две ссылки - на второй лист и на третий.
источник

VS

Vladimir Shchur in F# Chat
Ayrat Hudaygulov
С чего бы? Копия первого должна быть
я думал что по аналогии с мапом, а похоже копируются оба
источник

IB

Ivan Balanar in F# Chat
Спасибо. ужасно описанная последовательность, про вырожденный случай (два листа) Айрат все объяснил.
источник

AH

Ayrat Hudaygulov in F# Chat
Vladimir Shchur
я думал что по аналогии с мапом, а похоже копируются оба
Не, копируется первый
источник

AH

Ayrat Hudaygulov in F# Chat
И только первый
источник

IB

Ivan Balanar in F# Chat
copied structurally - и сиди думай, что это вообще такое, то ли memcpy, то ли создание новых элементов
источник

AH

Ayrat Hudaygulov in F# Chat
Ivan Balanar
copied structurally - и сиди думай, что это вообще такое, то ли memcpy, то ли создание новых элементов
Создание новых ссылок с тем же содержимым
источник

AH

Ayrat Hudaygulov in F# Chat
Мм... По сути дип копи
источник

IB

Ivan Balanar in F# Chat
Ayrat Hudaygulov
Создание новых ссылок с тем же содержимым
да, методом исключения до этого дошел
источник