【发布时间】:2009-11-02 00:21:44
【问题描述】:
我不明白,FP 编译器如何使处理不可变数据结构的代码快速,而不是炸毁堆栈等。
例如,在树中插入操作,它必须在添加新节点之前复制整个树并返回复制的树,而命令式的对手只需要添加一个指向新节点的指针。如果插入操作运行数百万次,则会占用大量内存,并且当树更大时,复制会越来越慢。 FP 编译器实际上是如何优化这个的?
【问题讨论】:
我不明白,FP 编译器如何使处理不可变数据结构的代码快速,而不是炸毁堆栈等。
例如,在树中插入操作,它必须在添加新节点之前复制整个树并返回复制的树,而命令式的对手只需要添加一个指向新节点的指针。如果插入操作运行数百万次,则会占用大量内存,并且当树更大时,复制会越来越慢。 FP 编译器实际上是如何优化这个的?
【问题讨论】:
【讨论】:
如果垃圾收集器正在执行其工作,则数据结构的旧副本将在不再使用时被回收。
【讨论】: