感悟篇:如何写好函数式代码

最近在写代码的时候常常感觉迷茫,到底函数式语言应该如何写代码。immutable 数据结构的好处到底在哪里。为什么我写出来的代码总感觉像是命令式、过程式的。

带着这些疑惑,我又重新开始学习了史上最成功的函数式语言 ---- SQL。是的你没看错,SQL是一门函数式语言。

https://www.sql-ex.ru/ 这个网站上,你可以做很多免费的 SQL 习题,还有免费的排名,非常爽。

而 SQL 核心的语句是很简单的,select, from, where 三板斧,轻轻松松地就能将需求变成查询语句。

例如这样一个问题:Find the model number, speed and hard drive capacity of PCs cheaper than $600 having a 12x or a 24x CD drive.

写出来的 SQL 答案就是:

select model, speed, hd
from PC
where price < 600 and (cd = '12x' or cd = '24x')

简直就是大白话直译,依然信达雅齐全。所以我们总结出来,要写出好的函数式代码,你得设计出好的 DSL,或者是好的抽象,好坏的标准就是能否够直接翻译产品的需求。而能否用自然语言描述出需求,也是很考验能力的。所以我们进一步推出:

要成为一个好的函数式程序员,你需要成为一个好的产品经理。

匿名函数

匿名函数又被称作 lambda,可以说是函数式语言的灵魂存在。比如这一段 SQL 语句:

join (...) as t on Product.model = t.model

其实就暗藏了一个匿名函数, 用 JS ES6 来写, 大概就就是

(Product, t) => Product.model === t.model

join 函数则被称为高阶函数,因为它以匿名函数为参数。

使用匿名函数和高阶函数的组合可以增加 DSL 使用者的自由度。

你可能感兴趣的:(编程语言前端后端)