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