10.4 第十章小结

728 篇文章 1 订阅
349 篇文章 0 订阅
10.4 第十章小结


在这一章,我们探讨了与函数程序效率有关的问题,讨论了用函数方式处理大量数据。因为大多数函数程序使用递归实现,这一章的很大一部分就是围绕这个主题。
可以看到,使用递归的代码,一定要仔细,避免由于递归太深,引起堆栈溢出的错误。在本章开头,我们讨论了一种称为尾递归的技术,它可用来重写我们熟悉的列表处理函数(如map and filter),能避免堆栈溢出。单靠尾递归,不能解决所有问题,所以,我们还讨论了连续,并用来写了一个简单的树处理函数的健壮版本。
我们还探讨了优化处理函数性能的技术。特别是,我们看到了记忆化,能够缓存没有副作用的函数结果。有效的优化依赖复杂性分析,所以,我们讨论了函数式数据结构和性能特点。在选择算法和操作时要小心,因为,一些细微的差别,比如,是在函数式列表的头,还是在列表尾添加元素,可能显著影响性能。我们还讨论了数组, 它不是主要的函数式数据结构,但如果我们使用得当,也可以用于函数方式。
在下一章,我们将继续探讨在函数语言中,实现算法的常见技巧。下一章的许多主题都涉及到使用不可变数据类型,以及函数编程的数学的清晰度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值