码迷,mamicode.com
首页 >  
搜索关键字:实用函数编程    ( 121个结果
13.1.2 异步下载网页
13.1.2 异步下载网页   在我们使用异步工作流来抓取网页内容之前,需要引用 FSharp.PowerPack.dll 库,它包含了许多 .NET 方法的异步版本。开发独立的应用程序时,可以使用添加引用命令;在这一章,我们将使用互动开发模式,因此,创建一个新的 F# 脚本文件,使用 #r 指令(清单  13.1)。   清单13.1 使用异步工作流写代码 (F# Interactive...
分类:Web程序   时间:2015-02-09 21:41:14    阅读次数:211
13.1.1 异步工作流为什么重要?
13.1.1 异步工作流为什么重要?   假设我们要下载网页的内容,在应用程序中使用,我们可以使用 System.Net 命名空间下的 WebClient 类,但下不能演示我们需要解决的问题,运行复杂、长时间的操作。相反,我们将首先显式创建 HTTP 请求,然后,下载数据:   var req =HttpWebRequest.Create("http://manning.com"); v...
分类:其他好文   时间:2015-02-08 11:35:44    阅读次数:218
第十三章 异步和数据驱动编程
第十三章异步和数据驱动编程   本章介绍  ■异步工作流编程 ■使用 F# Interactive 浏览数据 ■使用度量单位定义类型 ■处理与可视化数据   我们首先引述了一次对比尔 · 盖茨的采访,他谈到他感兴趣的编程任务的类型,并描述了编写应用程序的典型情况: 从 web 获取数据,不只是考虑把它当作文本,而且要引入结构,然后… …,尝试不同的数据表现方式,且以交互的方式。…...
分类:其他好文   时间:2015-02-03 17:15:59    阅读次数:211
13.1 异步工作流
13.1 异步工作流   有许多地方需要用到异步操作,比如,使用磁盘、调用 web 服务,或者连接到数据库,异步工作流可能显著提高性能。当应用程序执行异步操作时,很难预测操作什么时候完成。如果不能正确处理异步操作,应用程序就会效率低下,甚至可能停止响应。 要使代码能够执行异步操作,不会阻止调用线程,避免出现问题是必要的,但是,使用当前的技术很难实现。在 F# 中,这极大地简化了,是因为有了异...
分类:其他好文   时间:2015-02-03 17:14:17    阅读次数:239
第四部分 函数式编程应用
第四部分 函数式编程应用   虽然函数式编程肯定是优雅的,但是,你可能更感兴趣的是其实用目的:作为一种通用的风格,是有用的,在某些问题域中,它肯定更出色。我们已经看到的例子,比如,第四章绘制饼图的应用程序,和第十一章简单的照片浏览器,这些示例的主要目的,是为了演示特定的概念和技术。 第四部分则不同。在每一章,我们将花大量时间讨论实际问题,使用最适当的 F# 特点和函数式编程来解决。这些代码将...
分类:其他好文   时间:2015-02-03 11:05:20    阅读次数:185
12.7.2 创建日志记录计算
12.7.2 创建日志记录计算   清单 12.24 首先实现两个辅助函数,用于读写控制台,且两者还会把消息写入日志,所以,它们将括在 log 计算块中。为了显示如何组合非标准计算,我们在第三个函数中,使用了两个函数。在前面的示例中,我们使用 let! 基本操作,在清单 12.24 还引入了 do!。   清单 12.24 使用计算表达式的日志 (F# Interactive) > le...
分类:其他好文   时间:2015-02-02 15:57:48    阅读次数:264
12.7.3 使用计算表达式进行重构
12.7.3 使用计算表达式进行重构   在前一章,我们讨论过重构函数式程序的方法,最后一个主题是延迟性,它变改代码的执行方式,而不影响程序的结果。从某种意义上讲,添加延迟性也可看作是一种重构技术;计算表达式的类似之处在于,增加额外的代码,但不改变核心意思。   提示    在计算表达式和延迟性之间有密切的关系,使用 Lazy 计算类型,创建能够把代码转换成延迟计算的计算表达式,是有可...
分类:其他好文   时间:2015-02-02 15:56:47    阅读次数:190
12.8 第十二章小结
12.8 第十二章小结   在本章的第一部分,我们讨论了 .NET 序列,用 IEnumerable 类型表示,在 F# 中还称为 seq 。我们开始讨论生成序列的技术,包括高阶函数、迭代器和 F# 序列表达式。我们知道,序列是延迟的,能够创建无穷序列。我们还看到了一个实际的示例,使用颜色的无穷的序列,把绘制图表的代码,与用于在图表中生成颜色的代码分离开来。 接下来,我们讨论了如何处理序列。...
分类:其他好文   时间:2015-02-02 15:52:18    阅读次数:224
12.7.1 创建日志记录的计算
12.7.1 创建日志记录的计算   这个计算将产生一个值,并能够将消息写入到本地日志记录缓冲区。这样,计算的结果将成为一个值,和包含消息的字符串列表。同样,我们使用只有一个识别器的差别联合,表示这个类型:   type Logging =    | Log of 'T * list   这个类型非常类似于我们先前讨论的 ValueWrapper 示例,只是加上了一个 F# 列表,...
分类:其他好文   时间:2015-02-02 12:34:04    阅读次数:115
12.7 给计算增加日志记录
12.7 给计算增加日志记录   日志通常可以使用全局可变状态实现。然而,如果我们想要避免使用全局可变状态,并保持程序的纯函数性,那又该如何呢?我们有一个选择,就是把日志记录器的状态作为额外的参数值,传递我们要调用的每个函数。实现可能非常困难(想象一下,如果我们决定将另一个参数添加到这个状态中!)。 要解决这个问题,我们可以创建自定义计算类型,启用了日志记录,把日志记录器的状态隐藏在计算类型...
分类:其他好文   时间:2015-02-01 19:13:09    阅读次数:243
121条   1 2 3 4 ... 13 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!