12.8 第十二章小结

本文探讨了F#中的序列(seq)概念及其生成技术,包括高阶函数、迭代器和序列表达式等。文章还介绍了如何通过高阶函数处理序列,并详细解释了bind操作。此外,还讨论了计算表达式的应用,例如处理选项类型和记录日志消息。
12.8 第十二章小结



在本章的第一部分,我们讨论了 .NET 序列,由 IEnumerable<T> 类型表示,在 F# 中也称为 seq <'a>。我们开始讨论生成序列的技术,包括高阶函数、迭代器和 F# 序列表达式。我们看到,序列是延迟的,能够创建无穷序列。我们看到了一个实际的示例,使用颜色的无穷的序列,将绘制图表的代码,从在图表中使用的生成颜色的代码中分离出来。

接下来,我们讨论了如何处理序列。我们使用高阶函数,写了相同的代码,对应于 LINQ 的扩展方法,C# 的查询表达式,和 F# 的序列表达式。这有助于我们了解查询和序列表达式是如何工作的。一个最重要的操作是,bind 操作,它发生在序列中,就像在 F# 中的 collect 函数,以及在 LINQ 中的 SelectMany 方法。

相同的概念操作是可用于许多其他类型,并且我们看到,如何创建 F# 计算表达式,看起来像序列表达式,而只是处理其他类型。我们提供两个实际例子,为处理选项类型实现计算表达式,在执行过程中,保存日志消息。在某种程度上,同样的概念可以用 C# 实现,把使用计算表达式的地方换成查询表达式。F# 语言功能更通用的,而 C# 查询表达式更适合查询。

使用计算表达式最难的事,也许是确定什么时候设计和实现,是有益的。在下一章中,我们会讨论使用 F# 计算表达式中的最重要部分,能够执行 I/O 操作,而不会阻塞调用者的线程 。这是特别重要的,当执行速度慢的 I/O,比如,从互联网中读数据。再后,我们将会看到,F# 如何使我们能够以交互方式和可视化处理数据,这对于今天的联系日益紧密的世界,就成为重要的任务。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值