管道
文章平均质量分 68
心想才事成
这个作者很懒,什么都没留下…
展开
-
6.3 处理计划
6.3 处理计划 在本节,我们要把上一节的技术应用到可选值。在处理元组时,我们发现使用函数,有助于处理元组中的元素;类似地,处理可选值时,同样需要使用高阶函数,对可选值中的一个或多个进行某种操作。我们接着上一章的示例,从计划类型开始,然后,看一下选项类型。 在前面的章节中,我们实施了一个表示事件计划的类型。在 F# 中,使用差别联合Schedule(计划)实现,包含三种可选项;三个可选项翻译 2014-10-31 09:36:32 · 660 阅读 · 0 评论 -
6.4.2 使用 bind 函数
6.4.2 使用 bind 函数 下一步,我们想消除外层的模式匹配,这,使用 Option.map 是做不到的,因为这个函数总是,输入为 None,转换后输出是 None,输入为 Some,转换后输出是包含其他值的 Some。在外层的模式匹配中,我们要做的事情根本不是这样,即使输入值是 Some,而如果读第二个输入失败,仍可能返回 None。这样,作为参数值的 lambda 函数指定的类型翻译 2014-10-31 21:08:41 · 752 阅读 · 0 评论 -
把序列合并成字符串
把序列合并成字符串 let a1 = seq ["aa";"bb"];; let a2 = seq ["aa"];; let a3 = Seq.empty;; reduce 对于空序列就不容易处理了。 let b1 = a1 |> Seq.reduce(fun a b -> a + "," + b);; let b2 = a2 |> Seq.reduce(fun a原创 2012-07-28 15:21:45 · 1676 阅读 · 0 评论 -
6.4.4 实现选项类型的操作
6.4.4 实现选项类型的操作 绑定(bind)和映射(map)的实现有类似的结构,因为,两者都是依据选项值进行模式匹配的高阶函数。我们来看一看 F# 和 C# 的实现,这是在 C# 中实现函数式概念的最好示例。我们先看一下清单 6.14,这是映射操作的实现。 清单 6.14 用 F# 和 C# 实现 map 操作 F# Interactive C#翻译 2014-11-02 21:24:16 · 637 阅读 · 0 评论 -
6.8.1 映射、筛选和折叠(Mapping, filtering, and folding)
6.8.1 映射、筛选和折叠(Mapping,filtering, and folding) 映射、筛选和折叠是函数编程中最常见的操作;在处理函数式列表时,我们已经用到过,但它们还支持所有其他的集合类型(我们将在第十和十二章讨论其中一部分);这些操作并不限于集合,所有的操作都可用于处理选项类型。 清单 6.25 显示了映射、筛选和折叠函数的签名类型,清单中包括了我们尚未讨论过的Optio翻译 2014-11-20 10:30:12 · 897 阅读 · 0 评论