码迷,mamicode.com
首页 >  
搜索关键字:实用函数编程    ( 121个结果
11.3.2计算策略的比较
11.3.2计算策略的比较   [ evaluation、computation、calculation,在第二章,是后两个计算放在一起,让人搞不清准确的含义;现在倒好,出现了三个计算,又该如何体会呢? 据说,从左到右,是从粗略到精确的过度,即,前面的强调估算,后面的强调演算。 能体会出来吗?语言不同,表达真的不同。 因此,计算机就选了一个中间值,既不强调粗,也不强调精;恰恰表明,既强...
分类:其他好文   时间:2015-01-12 16:43:33    阅读次数:153
11.3.3 用函数模拟延迟计算
11.3.3 用函数模拟延迟计算   在F# 和C# 中计算顺序是提前的:作为给函数参数使用的表达式,在函数自身开始执行之前就计算好了。在C# 和F# 中,我们可以使用函数值模拟延迟计算,另外,F# 甚至有一个专门的关键字,支持延迟计算。 但首先,对于提前计算规则有一个例外,你肯定知道,并经常使用,但只是因为太常用,反而可能没有意识到它的特别。有些特定的C# 运算符,比如,逻辑或(||)、逻...
分类:其他好文   时间:2015-01-12 16:33:35    阅读次数:189
11.3.1.2 Haskell 的延迟计算策略
11.3.1.2 Haskell 的延迟计算策略   在延迟计算策略(lazy evaluation strategy)中,函数的参数值,在函数调用时不会计算,直到后来用到这个值时才计算。我们回到前面的例子:   TestAndCalculate(Calculate(10));   在这里,Haskell 直接跳转到TestAndCalculate 函数主体。Haskell 会记住参...
分类:其他好文   时间:2015-01-12 11:36:32    阅读次数:160
11.3.1.1 C# 和 F# 中的提前计算
11.3.1.1 C# 和 F# 中的提前计算   在大多数主流的语言中,指定计算顺序的规则很简单:程序进行函数调用时,先计算所有的参数值,然后再执行函数。我们用前面的例子来演示:   TestAndCalculate(Calculate(10));   在所有的主流语言中,程序都会执行Calculate(10),然后再把结果作为参数值传递给TestAndCalculate。正如我们在...
分类:Windows程序   时间:2015-01-12 10:55:06    阅读次数:180
11.3.1 不同的计算策略
11.3.1 不同的计算策略   Haskell 是一种纯函数式语言,有一个重要的方面,即,不允许任何副作用。有专门的技术在屏幕上输出,或处理文件系统,但对于程序员来说,它是以一种看起来不像有副作用的方式来实现。在这样的语言中,调整计算排序表达式的顺序是可能的;在Haskell 中,直到需要结果,才计算函数;这不会影响程序的结果,因为,函数没有副作用。 C# 和 F# 的函数都可能有副作用,...
分类:其他好文   时间:2015-01-11 16:16:53    阅读次数:195
11.2.3 测试组合函数
11.2.3 测试组合函数   在第11.1.2 节,我们讨论跟踪代码中的依赖关系时,使用的C# 方法,类似于上两个示例中的F# 函数,演示函数式编程使得更容易识别函数做什么,访问什么数据。这不仅在写代码时非常有用,而且在测试时也极其有用。 在第11.1 节,我们写过一个命令式方法,打印出由多字组成的名字,但是,它有副作用,会从作为参数传递进来的可变列表中删除元素。只要我们以后不再使用这...
分类:其他好文   时间:2015-01-11 13:36:31    阅读次数:202
11.2.2.1 结构相等和比较
11.2.2.1 结构相等和比较   在F# 中,我们能声明的大多数类型,都是不可变的;如果我们不显式提供实现IComparable 接口,并重写 Equals 方法,F# 编译器会自动实现,它是通过比较结构相等(structural equality)实现的。对F# 的类,还不能自动完成,只对简单的函数类型,比如,记录、差别联合和元组,不必要显式声明。 使用这种比较类型的值,如果它们是相...
分类:其他好文   时间:2015-01-09 17:33:21    阅读次数:154
11.2.2.2 测试列表
11.2.2.2 测试列表   我们将要测试的函数是广义(generalized,是百度翻译的,不知道到底是什么意思)的版本,输出多字组成的名字;不同的是,函数结果返回名字,而不是打印。结果是有两个列表的元组:一个包含多字的名字,另一个包含单个词的名字。在函数的术语中,这个操作称为分区(partitioning),我们使用来自标准的F# 库中的List.partition 函数,很容易就能实现...
分类:其他好文   时间:2015-01-09 17:30:49    阅读次数:153
11.2.2 测试结构相等
11.2.2 测试结构相等   在C# 中,测试复杂数据结构的相等可能非常棘手。如果我们构造一个新的对象,具有相同的属性,使用== 运算符比较两个对象,其结果很可能是false,因为我们比较的是两个不同的实例。 在C# 中,== 运算符可以被重载,Object.Equals 可以重写,但通常只用于值类型或不可变数据结构。比较可变类型的两个不同实例时,识别两者之间的不同,是很重要的,因为数据可...
分类:其他好文   时间:2015-01-09 15:33:26    阅读次数:122
11.2.1.1 在 F# 交互环境中测试程序
11.2.1.1 在 F# 交互环境中测试程序   我们演示自始至终的整个过程,将使用与前一节PrintLongest 和PrintMultiWord相类似两个函数,但这一次,我们用F# 实现。从清单11.7 中可以看到,我们使用交互式控制台的方式略有不同。   清单11.7 使用xUnit.net 交互式测试代码(F# Interactive) > #if INTERACTIVE   ...
分类:其他好文   时间:2015-01-08 09:38:46    阅读次数:154
121条   上一页 1 ... 3 4 5 6 7 ... 13 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!