码迷,mamicode.com
首页 >  
搜索关键字:函数编程    ( 392个结果
F# 越用越喜欢
对于使用多年C#语言从事.NET面向对象开发的人员来说,F#这种函数编程极其不习惯,不光是语法上不习惯,整个概念上跟C#都不一样。要只是语法不一样就简单了,难就难在要转变一个人思维习惯,要转变一个人思维是多难的一件事情呀!但要学F#就得必须转变。
分类:其他好文   时间:2014-12-30 15:10:09    阅读次数:1544
10.2 处理大集合
10.2 处理大集合   我们提到过要回到尾递归,并展示稍许复杂的涉及列表的情况。现在,希望任何由递归引起的头痛都将消失,喝一杯新鲜的咖啡后,为即将到来的例子做好准备。 既要确保我们的程序不引发栈溢出异常,还要在合理的时间内运行。(是什么作出这种不切实际的要求?)函数式列表是令人难以置信的有用,能够非常有效,但如果使用方法不正确,会异常地变慢,我们现在就展示如何避免这些问题。...
分类:其他好文   时间:2014-12-22 11:14:17    阅读次数:98
10.1.2 使用记忆化缓存结果
10.1.2 使用记忆化缓存结果   记忆化(Memoization),可以描述为缓存函数调用的结果,听起来可能有点复杂,但是,技术非常简单。正如我们前面提到的那样,在函数式编程中,大多数函数是没有副作用的,因此,如果我们用相同的参数值,两次调用同一个函数,得到的结果相同。 如果我们要得到与上一次相同的结果,为什么还要麻烦去再一次执行函数呢?相反,我们可以缓存这个结果。如果我们把第一次调用的...
分类:其他好文   时间:2014-12-18 17:02:59    阅读次数:192
10.1.1.1 使用累加器参数
10.1.1.1 使用累加器参数   我们考虑一下,如何把 sumList 函数改成尾递归,即,只在参数值是 cons cell (非空的列表)的分支上,执行一次递归调用。我们的经验法则表明,不应该很难,但目前,它做的事情,不止是返回递归调用的结果:把头中的值与总和相加。 要把这个函数变成尾递归函数,可以使用提供累加器参数(accumulator argument)的方法。计算结果时,不再从...
分类:其他好文   时间:2014-12-18 15:11:40    阅读次数:141
10.1.1避免尾递归的堆栈溢出
10.1.1避免尾递归的堆栈溢出   对于每一个函数调用,运行时分配一个栈帧(stack frame)。这些帧保存在由系统维护的栈中;调用完成,栈帧被删除;如果函数调用其他函数,那么,一个新的帧添加到这个栈的顶部。栈的大小是有限的,所以,太多的嵌套函数调用会耗光了给其他栈帧的空间,就不能再调用下一个函数了。在 .NET 中发生这种情况时,会引发 StackOverflowException 错...
分类:其他好文   时间:2014-12-17 18:40:28    阅读次数:206
第十章 数据结构的效率
第十章数据结构的效率   本章介绍 ■优化和改进递归函数 ■使用尾递归(tail-recursion)和连续(continuations) ■高效地使用列表和数组   到目前为止,,我们在本书中已经使用过的函数式方法,有递归和函数式数据结构,比如,不可变列表。我们能写的最简单代码,是使用基本的  F# 集合类型(列表),直接表达我们的意图。在很多情况下,这种方法是合适的;但是,用来处...
分类:其他好文   时间:2014-12-16 17:14:48    阅读次数:133
10.1 优化函数 在前面的章节中,我们已经知道,递归是 F# 中处理函数的主要控制流机制。我们第一次是使用它写一些进行计算的简单函数,例如,计算指定范围内的数字的和或阶乘。后来,我们发现它在处理递
10.1 优化函数   在前面的章节中,我们已经知道,递归是 F# 中处理函数的主要控制流机制。我们第一次是使用它写一些进行计算的简单函数,例如,计算指定范围内的数字的和或阶乘。后来,我们发现它在处理递归数据结构,最重要的列表是时,是无价的。 我们知道,递归也有一些局限性,堆栈溢出的可能性是最明显的一个;我们将会看到,某些递归计算非常低效。在命令式语言中,通常使用非递归函数,以避免出现问题;...
分类:其他好文   时间:2014-12-16 17:10:26    阅读次数:179
9.5.2 使用值和委托
9.5.2 使用值和委托   在这一节,我们要讨论在C# 中使用两个更典型的 F# 构造,如何导出值和高阶函数,后者是棘手的,因为,对于函数,F# 使用相当复杂的内部表示。 如果函数的参数为 int -> int –> int,C# 开发人员会把它看成FastFunc>。使用这种类型虽然是可行的,但非常不方便,我们要使用另一种方法。如果要让高阶函数能在 C# 中使用,可以使用标准的 .NET...
分类:其他好文   时间:2014-12-16 10:08:33    阅读次数:138
9.6 第九章小结
9.6 第九章小结   在前面几章,我们讨论了函数式编程,用函数风格实现了几个示例应用程序。我们从简单的函数概念入手,比如,把值组合成“多值(multiple values)”或“可选值(“alternative values)”,然后,讨论了使用函数的方法。在第七章和第八章,我们讨论了函数式程序设计,这不是偶然的决定:本书的结构对应于 F# 的迭代式开发风格。我们从简单的概念开始,能够简单、...
分类:其他好文   时间:2014-12-16 10:03:22    阅读次数:133
9.5.1 处理记录和成员
9.5.1 处理记录和成员   我们先从一个基本的例子开始。在本章的第一节,我们已经知道如何为表示矩形的 Rect 类型添加成员。现在,我们要在 C# 中使用这个类型。首先,我们需要创建一个新的 F# 库项目,添加源文件(例如,export.fs),代码在清单 9.20。   清单 9.20 把 F# 类型编译成库(F#)   namespace Chapter09.FSharpExp...
分类:其他好文   时间:2014-12-15 15:26:03    阅读次数:155
392条   上一页 1 ... 30 31 32 33 34 ... 40 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!