В Real World Haskell существует раздел под названием "Жизнь без массивов или хэш-таблиц", где авторы предлагают, чтобы список и деревья были предпочтительнее в функциональном программировании, тогда как массив или хеш-таблица могут использоваться вместо этого в императивной программе.
Это имеет смысл, поскольку гораздо проще повторно использовать часть (неизменяемого) списка или дерева при создании нового, чем делать это с помощью массива.
Итак, мои вопросы:
- Существуют ли действительно существенно разные шаблоны использования для структур данных между функциональным и императивным программированием?
- Если да, это проблема?
- Что делать, если вам действительно нужна хэш-таблица для какого-либо приложения? Вы просто проглотите дополнительные расходы, понесенные для модификаций?