Contents of the book

https://swlaschin.gitbooks.io/fsharpforfunandprofit/content/site-contents/

Getting started

  • 安装和使用F# 会让你开始入门。

  • 为什么使用F#?一次F#的互动式旅行。

  • 学习F#有助于你更有效地学习。

  • 解决F#中的问题,当你在编译代码时遇到问题时可以查阅。

然后你可以尝试...

  • 在工作中使用F#的二十六种低风险方式。你现在就可以开始——无需任何许可! 教程 以下系列是关于F#关键概念的教程。

Tutorials

以下系列是有关 F# 关键概念的教程。

  • 函数式思维 从基础开始,解释函数为什么以及如何按照它们的方式工作。

  • 表达式和语法 覆盖了如模式匹配等常见表达式,并有一篇关于缩进的文章。

  • 理解F#类型 解释了如何定义和使用各种类型,包括元组,记录,联合和选项。

  • 使用类型设计 解释了如何在设计过程中使用类型,使非法状态无法表示。

  • 在集合函数之间做出选择 如果你是从C#转到F#,大量的列表函数可能会让你感到不知所措,因此我写了这篇文章来帮助你找到你想要的。

  • 基于属性的测试:懒惰程序员编写数千个测试的指南。

  • 理解计算表达式 揭示了它们的神秘面纱,并展示了你如何创建自己的计算表达式。

函数式模式 这些帖子解释了函数式编程的一些核心模式——例如“映射map”、“绑定bind”、“单子monads”等概念。

  • 面向轨道编程:一种函数式处理错误的方法

  • 状态单子:通过讲述Dr Frankenfunctor和Monadster的故事来介绍如何处理状态。

  • 阅读器单子:重新发明阅读器单子。

  • 映射,绑定,应用,提升,序列和遍历:一系列描述如何处理通用数据类型的核心函数的文章。

  • 不用哭就能理解的Monoids:一种基本不涉及数学的常见函数模式讨论。

  • Fold和递归类型:看一看递归类型、范畴态射、尾递归、左fold和右fold的区别,等等。

  • 理解解析器组合子:从零开始创建一个解析器组合子库。

  • 观察乌龟的十三种方式:演示了实现海龟图形API的许多不同技术,包括状态单子,代理,解释器等等! 实际例子

Worked examples

这些帖子提供了详细的实际例子,包含大量的代码!

  • 设计正确性:如何使非法状态无法表示(购物车示例)。

  • 基于堆栈的计算器:使用简单堆栈展示组合器的威力。

  • 解析命令行:使用模式匹配结合自定义类型。

  • 罗马数字:另一个模式匹配的例子。

  • 计算器演绎:设计计算器的类型优先方法。

  • 企业井字游戏:纯函数实现设计决策的详解。

  • 编写一个JSON解析器。

Specific topics in F#

General:

  • 四个区别F#和标准命令式语言的关键概念。

  • 理解F#缩进。

  • 使用方法的缺点。

函数:

  • 柯里化 Currying.

  • Partial Application.

控制流Control Flow:

  • Match..with表达式 和 创建折叠以隐藏匹配。

  • If-then-else和循环。

  • 异常

类型:

  • 选项Option类型,尤其是 为什么None不等同于null。

  • 记录类型。

  • 元组类型。

  • Discriminated Unions. 可区分联合

  • 代数类型的大小和领域建模。

有争议的帖子

  • 你的编程语言是否合理?或者,为什么可预测性很重要。

  • 对'罗马数字Kata与评论'的评论。我对罗马数字Kata的处理方式。

  • 不要使用静态类型函数式编程语言的十个理由。对我不理解的事情的抱怨。

  • 我们不需要那么多的UML图,或者,为什么在许多情况下,使用UML进行类图是没有必要的。

Last updated