13.6 第十三章小结
这一章的重点是要演示了在 F# 中,典型的探究式编程(explorative programming)的生命周期。我们还介绍了一些 F# 语言和库功能,在其他的发展进程中非常重要。
我们首先从网络获取数据。为此,我们使用异步工作流,在标准的 F# 库中实现 F# 计算表达式。异步工作流可用于高效实现 I/O 和其他非常耗时的操作,而不会阻塞调用者线程和浪费资源。一旦我们下载数据以后,就可以使用 LINQ to XML 库探索其结构,在解析它,并把它转换为类型化的 F# 表示形式之前。所有这一切都是以交互式的风格实现的,通常交替写几行代码来尝试使用的数据,然后,写一个函数把相同的逻辑应用到已经下载的所有信息。
当我们处理集合时,使用了许多高级功能,比如,序列表达式,我们还使用了度量单位,来指定数据的确切性质。最后,我们讨论了如何从 F# Interactive 的命令解释程序中控制 Excel。它显示了在处理任何 Office 应用程序,或者公开了 COM 接口的其他应用程序时,可以使用的一般原则。
当我们在第 16 章讨论反应编程(reactive programming)时,还会返回到 F# 异步工作流。下一章是密切相关的主题,对许多人来说,它是考虑函数式编程的最有说服力的理由。我们会讨论并行化的函数式编程,以充分利用大部分多核处理器。
这一章的重点是要演示了在 F# 中,典型的探究式编程(explorative programming)的生命周期。我们还介绍了一些 F# 语言和库功能,在其他的发展进程中非常重要。
我们首先从网络获取数据。为此,我们使用异步工作流,在标准的 F# 库中实现 F# 计算表达式。异步工作流可用于高效实现 I/O 和其他非常耗时的操作,而不会阻塞调用者线程和浪费资源。一旦我们下载数据以后,就可以使用 LINQ to XML 库探索其结构,在解析它,并把它转换为类型化的 F# 表示形式之前。所有这一切都是以交互式的风格实现的,通常交替写几行代码来尝试使用的数据,然后,写一个函数把相同的逻辑应用到已经下载的所有信息。
当我们处理集合时,使用了许多高级功能,比如,序列表达式,我们还使用了度量单位,来指定数据的确切性质。最后,我们讨论了如何从 F# Interactive 的命令解释程序中控制 Excel。它显示了在处理任何 Office 应用程序,或者公开了 COM 接口的其他应用程序时,可以使用的一般原则。
当我们在第 16 章讨论反应编程(reactive programming)时,还会返回到 F# 异步工作流。下一章是密切相关的主题,对许多人来说,它是考虑函数式编程的最有说服力的理由。我们会讨论并行化的函数式编程,以充分利用大部分多核处理器。