码迷,mamicode.com
首页 >  
搜索关键字:函数编程    ( 392个结果
8.4.3.2 函数式实现
8.4.3.2 函数式实现   我们不是把基本操作表示为虚方法,通过派生类来填充,而是把它表示为属性,属性的类型是函数类型,Func,函数然后由类的用户提供。清单 8.18 显示了QueryDecision 类的实现,以及创建简单的决策树示例。   清单 8.18 模板方法的简单实现 (C#) class QueryDecision : Decision {    public str...
分类:其他好文   时间:2014-12-06 11:26:19    阅读次数:175
8.4.2 F# 决策树
8.4.2 F# 决策树   从规范的最后一句可以看出,链接既可以指向查询,也可以指向最终结果。在 F# 中,我们可以直接使用有两个选项的差别联合类型来写。规范还讲到了查询的详细信息,查询包含不同的字段,因此,可以用F# 的记录类型表示。 我们将定义一个 F# 的记录类型(QueryInfo),表示有关查询的信息,和一个差别联合类型(Decision),它既可以是另一个查询,也可以是最终的结...
分类:其他好文   时间:2014-12-05 17:27:29    阅读次数:131
8.3.3.1 C# 中的组合行为
8.3.3.1 C# 中的组合行为   这一章,我们首先看到的是用C# 代码写的示例,声明只有一个方法的接口表示检查,然后,为了更方便的方法写代码,我们使用了函数(和 Func 委托)。如果我们想要实现处理两个函数的程序,就像现在用 F# 所做的,可能会立即转回接口。在 C# 中,使用接口肯定要比使用元组或类,以函数作为其成员更方便、更合理。我们已经说过,在 C# 中,有两种选择:对于简单的行...
分类:Windows程序   时间:2014-12-05 10:58:23    阅读次数:152
8.4.1 决策树(Decision trees)
8.4.1 决策树(Decision trees)   决策树是机器学习中最流行的一种算法,可以用于根据数据作出决策,或把输入划分为不同的类别。算法使用树描述数据的哪些属性应进行测试,对每个可能的答案决定做什么。对答案反应既可能是另一个测试,也可能是最终答案。 机器学习理论提供了复杂的方法,用于自动从数据生成树,但对于我们的示例,我们将手工创建树。图 8.3 显示了我们问题的决策树。...
分类:其他好文   时间:2014-12-05 10:57:26    阅读次数:216
8.3.2 构建组合行为
8.3.2 构建组合行为   在清单 8.11 中,检查和报告验证最低收入和最小当前工作年限的函数,明显重复。这些检查有类似的结构:都检查客户的某一属性是否小于最小的允许值。 找出共性是只删除重复第一步,下一步是要看 checkJobYears 和 checkIncome 函数(连同其报表函数)的哪部分是不同的: ■ 检查不同的属性。 ■ 使用不同的最小值。 ■ 有略微不同的消息。 ...
分类:其他好文   时间:2014-12-04 15:39:34    阅读次数:141
8.3.3 F# 代码的进一步演变
8.3.3 F# 代码的进一步演变   在上一节,我们经历了从一段简单的 F# 代码,它保存函数的列表开始,到更复杂的版本,使用记录的列表,这是我们在第一章讨论的 F# 开发过程的一部分。我们知道F# 程序通常是非常简单的脚本开始,逐步演变成标准的遵循 .NET 编程准则的代码,且从.NET 对象模型中受益。 我们开始用最简单的方法来解决问题,仅使用我们在开始时所知道的。当后来意识到需要添加...
分类:其他好文   时间:2014-12-04 15:37:19    阅读次数:120
8.3.1 函数的记录
8.3.1 函数的记录   我们已经看到一种处理多个函数的方法。在前面的示例中,返回结果为函数元组,同样的技术可以表示有新增报表功能的应用程序。报表函数的参数为客户,在屏幕上输出信息,返回结果为 unit。使用这种表示方法,行为列表的类型将是:   ((Client -> bool) * (Client -> unit))list   初看起来有点可怕,很复杂,函数没有名字,使代码不具...
分类:其他好文   时间:2014-12-04 12:14:38    阅读次数:111
8.2.3.2 在闭包中捕捉引用单元
8.2.3.2 在闭包中捕捉引用单元   现在,我们可以编写代码,捕获在闭包中使用引用单元创建的可变状态。清单 8.9 显示了可配置收入检查的 F# 版本。我们创建了 createIncomeTests 函数,返回有两个函数的元组:第一个函数改变所需的最低收入,第二个函数测试函数自身。   清单 8.9 使用闭包测试可配置收入 (F# Interactive) > let createI...
分类:其他好文   时间:2014-12-03 19:25:22    阅读次数:177
8.3 使用组合行为
8.3 使用组合行为   在这一章,我们所讨论处理行为的应用程序或组件,能够在开发的后期,甚至在运行时添加新的行为;关键的设计思想是要保证添加新的行为要尽可能容易。在我们实现新的功能之后,应该可以注册这个函数(例如,通过将其添加到列表),并在应用程序使用,而不需要修改任何代码。 为使问题简化,最好是使需要实现的函数数量最小化。通常情况下,一个函数足以表示功能,但在某些情况下,可能需要包含额外...
分类:其他好文   时间:2014-12-03 19:22:41    阅读次数:161
8.2.3.1 可变状态使用引用单元
8.2.3.1 可变状态使用引用单元   要回答这个问题,我们需要能够创建一些要捕获的状态。一个方法是用 let mutable,但是,这样,并不能运行,因为这种可变值只能用于局部,不能被闭包捕获。 第二个方法是使用引用(ref)类型创建可变值,即引用单元(reference cell)的缩写,它是能够包含可变值的小对象(实际上,声明为 F# 的记录类型)。要理解引用类型的原理,我们在 C#...
分类:其他好文   时间:2014-12-03 15:45:10    阅读次数:189
392条   上一页 1 ... 33 34 35 36 37 ... 40 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!