12.8 第十二章小结

728 篇文章 1 订阅
349 篇文章 0 订阅

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# 能够以交互方式和可视化处理数据,这对于今天联系日益紧密的世界,成为非常重要的任务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值