函数式设计中的常见结构:幺半群与类型类深入解析
1. 函数式设计的抽象视角
在函数式编程里,我们运用函数式设计原则编写了诸多库。现在,我们将从更广泛的视角出发,探究函数式编程中出现的常见模式,并把实践中获得的经验融入抽象理论,以此描述这些库之间的共同结构。
这种抽象具备直接的实际益处,它能够消除重复代码。我们可以把抽象表示为类、接口和函数,在实际程序里引用它们。其主要益处在于概念整合,当我们识别出不同上下文中不同解决方案之间的共同结构时,就可以用一个定义将这些结构实例统一起来并命名。例如,当你遇到一个问题时,或许能说“那看起来像一个幺半群!”,这时你就已经在探寻解决方案的道路上迈出了一大步。此外,如果其他人也使用相同的术语,你就能高效地与他们交流设计思路。
2. 幺半群的引入
我们从幺半群开始探讨,因为它简单、普遍且实用。在日常编程中,无论我们是否意识到,幺半群都经常出现。处理列表、连接字符串以及累加循环结果等操作,通常都可以用幺半群来表述。幺半群在两方面很有用:一是便于并行计算,我们可以将问题分解成多个可以并行计算的块;二是能够组合简单的计算来构建复杂的计算。
2.1 什么是幺半群
我们先看字符串连接的代数。例如,”foo” + “bar” 得到 “foobar”,空字符串是该操作的单位元,即 (s + “”) 或 (“” + s) 的结果总是 s。而且,三个字符串的连接操作是结合的,(r + s + t) 无论以 ((r + s) + t) 还是 (r + (s + t)) 的方式组合,结果都相同。
整数加法也遵循相同规则,它是结合的,(x + y) + z 总是等于 x + (y + z
超级会员免费看
订阅专栏 解锁全文
18

被折叠的 条评论
为什么被折叠?



