Thinking Functionally: Introduction
https://swlaschin.gitbooks.io/fsharpforfunandprofit/content/posts/thinking-functionally-intro.html
既然您已经在“为什么使用 F#”系列中看到了 F# 的一些强大功能,我们将退后一步,看看函数式编程的基础知识——“函数式编程”的真正含义是什么,以及如何进行函数式编程而不同于面向对象或命令式编程。
改变你的思维方式
重要的是要理解函数式编程不仅仅是风格上的差异;这是一种完全不同的编程思维方式,真正的面向对象编程(在 Smalltalk 中)也是一种不同于传统命令式语言(如 C)的思维方式。
F# 确实允许非功能性样式,并且很容易保留您已经熟悉的习惯。您可能只是以非功能性方式使用 F#,而没有真正改变您的思维方式,也没有意识到您缺少什么。为了充分利用 F#,并在一般情况下流畅和舒适地使用函数式编程,从函数式而不是命令式的角度思考是至关重要的。这就是本系列的目标:帮助您深入理解函数式编程,并帮助您改变思维方式。
这将是一个相当抽象的系列,尽管我将使用大量简短的代码示例来说明要点。我们将涵盖以下几点:
Mathematical functions. 第一篇文章介绍了函数式语言背后的数学思想,以及这种方法带来的好处。
Functions and values. 下一篇文章将介绍函数和值,展示“值”与变量有何不同,以及为什么函数与简单值之间存在相似之处。
Types. 然后我们继续讨论与函数一起工作的基本类型:原始类型,例如 string 和 int;单元类型、函数类型和泛型类型。
Functions with multiple parameters. 接下来,我将解释“柯里化currying”和“partial application”的概念。如果您有命令式背景,那你从这里开始就要脑壳疼了
Defining functions. 然后一些帖子专门讨论定义和组合函数的许多不同方法。
Function signatures. 然后是关于函数签名关键主题的重要帖子:它们的含义以及如何使用它们来帮助理解。
Organizing functions. 一旦您知道如何创建函数,您如何组织它们以使它们可用于您的其余代码
Last updated