# Contents of the book

### Getting started <a href="#getting-started" id="getting-started"></a>

* 安装和使用F# 会让你开始入门。
* 为什么使用F#？一次F#的互动式旅行。
* 学习F#有助于你更有效地学习。
* 解决F#中的问题，当你在编译代码时遇到问题时可以查阅。

然后你可以尝试...

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

### Tutorials <a href="#tutorials" id="tutorials"></a>

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

* 函数式思维 从基础开始，解释函数为什么以及如何按照它们的方式工作。
* 表达式和语法 覆盖了如模式匹配等常见表达式，并有一篇关于缩进的文章。
* 理解F#类型 解释了如何定义和使用各种类型，包括元组，记录，联合和选项。
* 使用类型设计 解释了如何在设计过程中使用类型，使非法状态无法表示。
* 在集合函数之间做出选择 如果你是从C#转到F#，大量的列表函数可能会让你感到不知所措，因此我写了这篇文章来帮助你找到你想要的。
* 基于属性的测试：懒惰程序员编写数千个测试的指南。
* 理解计算表达式 揭示了它们的神秘面纱，并展示了你如何创建自己的计算表达式。

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

* 面向轨道编程：一种函数式处理错误的方法
* 状态单子：通过讲述Dr Frankenfunctor和Monadster的故事来介绍如何处理状态。
* 阅读器单子：重新发明阅读器单子。
* 映射，绑定，应用，提升，序列和遍历：一系列描述如何处理通用数据类型的核心函数的文章。
* 不用哭就能理解的Monoids：一种基本不涉及数学的常见函数模式讨论。
* Fold和递归类型：看一看递归类型、范畴态射、尾递归、左fold和右fold的区别，等等。
* 理解解析器组合子：从零开始创建一个解析器组合子库。
* 观察乌龟的十三种方式：演示了实现海龟图形API的许多不同技术，包括状态单子，代理，解释器等等！ 实际例子

### Worked examples <a href="#worked-examples" id="worked-examples"></a>

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

* 设计正确性：如何使非法状态无法表示（购物车示例）。&#x20;
* 基于堆栈的计算器：使用简单堆栈展示组合器的威力。
* 解析命令行：使用模式匹配结合自定义类型。
* 罗马数字：另一个模式匹配的例子。
* 计算器演绎：设计计算器的类型优先方法。
* 企业井字游戏：纯函数实现设计决策的详解。
* 编写一个JSON解析器。

### Specific topics in F# <a href="#specific-topics-in-f" id="specific-topics-in-f"></a>

General:

* 四个区别F#和标准命令式语言的关键概念。&#x20;
* 理解F#缩进。&#x20;
* 使用方法的缺点。&#x20;

### 函数：

* 柯里化 Currying.
* Partial Application.

### 控制流Control Flow：

* Match..with表达式 和 创建折叠以隐藏匹配。
* If-then-else和循环。&#x20;
* 异常

### 类型：

* 选项Option类型，尤其是 为什么None不等同于null。&#x20;
* 记录类型。&#x20;
* 元组类型。&#x20;
* Discriminated Unions. 可区分联合
* 代数类型的大小和领域建模。&#x20;

### 有争议的帖子&#x20;

* 你的编程语言是否合理？或者，为什么可预测性很重要。&#x20;
* 对'罗马数字Kata与评论'的评论。我对罗马数字Kata的处理方式。&#x20;
* 不要使用静态类型函数式编程语言的十个理由。对我不理解的事情的抱怨。&#x20;
* 我们不需要那么多的UML图，或者，为什么在许多情况下，使用UML进行类图是没有必要的。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://fsharpforfunandprofit.bloomingdream.org/contents-of-the-book.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
