码迷,mamicode.com
首页 >  
搜索关键字:实用函数编程    ( 121个结果
第十章 数据结构的效率
第十章数据结构的效率   本章介绍 ■优化和改进递归函数 ■使用尾递归(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
9.5 在 C# 中使用 F# 库
9.5 在 C# 中使用 F# 库   像 C# 一样,F# 也是一种静态类型的语言,就是说,编译器知道每个值的类型,以及类方法和属性的签名。对于与 C# 的互操作性来说,这是非常重要的,因为,编译器可以生成代码,看起来就像普通的 .NET 库。   与其他 .NET 语言的互操作性   F# 和 C# 或 VB.NET 之间的互操作性是非常平滑的,相比有 .NET 实现的动态类型的语...
分类:Windows程序   时间:2014-12-15 10:31:08    阅读次数:218
9.4.2.2 F# 中的向上转换和向下转换(UPCASTS AND DOWNCASTS)
9.4.2.2 F# 中的向上转换和向下转换(UPCASTSAND DOWNCASTS)   如果类型之间的转换不会失败,就称为向上转换(upcast)。我们已经看到,把类型转换成由该类型实现的接口,就是这种情况;另一个示例是把派生类转换成它的基类,在这种情况下,编译器也可以保证操作是正确的,不会失败。 如果有一个基本类型的值,希望将它转换为继承类,操作可能会失败,因为基类的值可能是目标类的...
分类:其他好文   时间:2014-12-12 19:14:21    阅读次数:170
9.4.2 实现接口和类型转换
9.4.2 实现接口和类型转换   我们已经讨论过在 F# 中如何声明接口,如何使用对象表达式,创建实现接口的值。这是一个非常轻量级的解决方案,类似于 lambda 函数。正如 lambda 语法,对于创建函数来说,并不总是合适的选择一样,有时,在命名类中实现接口,是有道理的。 我们将继续使用在本章前面的示例,来看一下用 C# 和 F# 实现接口,我们回顾一下两种语言中的接口声明:   ...
分类:其他好文   时间:2014-12-12 16:47:52    阅读次数:170
9.4.2.1 在 F# 中实现接口
9.4.2.1 在 F# 中实现接口   清单 9.17 使用 C# 中的显式接口实现,因为,这是 F# 允许的唯一的接口实现的风格。在函数编程风格中,这通常足够了。如果确实需要直接公开类的功能,可以添加额外的、调用相同代码的成员。清单 9.18 显示了前面示例的 F# 版本。   清单 9.18 在类中实现接口 (F#) type CoefficientTest(incomeCoeff...
分类:其他好文   时间:2014-12-12 16:46:59    阅读次数:136
9.4 具体的对象类型
9.4 具体的对象类型   面向对象编程中的最重要的结构,就是类的声明。它的价值体现用 F# 写的库,可以在 C# 中使用,因为从 C# 中引用F# 声明的类时,看起来就像普通的类。从概念上讲,类有一点像带成员的记录,因为,它们把值存储在字段中,并提供成员进行访问;类还有另外的功能,在 F# 中,出现下列情况,通常使用类: ■ 需要封装数据和行为时。 ■ 在迭代开发过程的后期,把简单的元组...
分类:其他好文   时间:2014-12-12 11:49:28    阅读次数:174
121条   上一页 1 ... 6 7 8 9 10 ... 13 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!