27、函数式设计中的常见结构:幺半群与类型类深入解析

函数式设计中的常见结构:幺半群与类型类深入解析

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值