Я хотел бы лучше понять стажеров, например. Data.Map. Когда я вставляю новое связывание в Map, то из-за неизменности данных я возвращаю новую структуру данных, которая идентична старой структуре данных и новой привязке.
Я хотел бы понять, как это достигается. Компилятор в конечном итоге реализует это путем копирования всей структуры данных, например. миллионы привязок? Можно ли вообще сказать, что изменяемые структуры данных/массивы (например, Data.Judy) или императивные языки программирования лучше работают в таких случаях? Имеют ли неизменяемые данные какие-либо преимущества, когда речь заходит о словарях/хранилищах значений ключа?