1 个不稳定版本
0.1.0 | 2022 年 6 月 26 日 |
---|
#2311 在 Rust 模式
33KB
832 行
部分功能型
这是一个在 Rust 中实现的一些函数式编程语言的类型集合。我的主要目标是学习更多 Rust,并且这是当我做了 Rust 中的“部分配置”时产生的,我决定将其制作成一个自包含的 crate。
半群
半群是一种可以与其他类型结合以创建相同类型新类型的类型。例如,Rust 的数值原语如 u32 在加法运算符下就是一个例子,例如 5 + 2 将会得到一个新的 u32 类型的 7。一些更有趣的半群包括 Option,如果 T 也是半群,以及 Result
幺半群
幺半群是半群的一个子特例,具有额外的 单位元 属性。空单位元和 Rust 标准库中的 Default 特性可以互换使用。任何实现了 Semigroup 和 Default 的类型都将获得 Monoid 的泛型实现。
示例
以下是一些示例,更多示例可以在源 crate 的 examples 目录下找到。
以下是一个来自 LeetCode 问题的非常简单的示例
use partial_functional::prelude::*;
fn max_profit(prices: Vec<u32>) -> u32 {
let mut cheapest = Min::empty();
let mut profit = Max::empty();
for price in prices {
cheapest = cheapest.combine(price.into());
profit = profit.combine(Max(price - cheapest.0));
}
profit.0
}
依赖
~1.5MB
~38K SLoC