在《Real World Haskell》中,有一篇名为“没有数组或哈希表的生活”的章节,在这里作者建议函数式编程中优先使用链表和树,而在命令式程序中可以使用数组或哈希表。
这很有意义,因为在创建一个新的列表或树时,重用(不可变的)列表或树的一部分比使用数组要容易得多。
所以我的问题是:
- Are there really significantly different usage patterns for data structures between functional and imperative programming?
- If so, is this a problem?
- What if you really do need a hash table for some application? Do you simply swallow the extra expense incurred for modifications?