Ken*_*oth 1 functional-programming rust
我是一名函数式程序员,并尝试以函数式方式使用 Rust。
我读了
然而,令人失望的是看到代码只是在 OOP 范式中实现 Object&Method。
Monad 和 Functor 可以用纯函数的方式定义,而根本上需要的是高阶泛型类型函数(人们更喜欢称之为 HKT 或其他什么)。
我也读过这里
但这是6年前的事了。
无论哪种方式,如果没有高阶泛型类型函数,就不可能以标准函数方式组合 Functor 或 Monad。
我也很惊讶我无法以简单的 lambda 表达式形式正确定义简单的恒等函数。
let identity = <T>|a:T| a;
Run Code Online (Sandbox Code Playgroud)
现在已经2022年了,有什么解决办法吗?
不能用泛型类型定义闭包吗?
不,根据2022 年和 rust 1.58,它仍然不是。
作为替代方案:
您可以在(几乎?)任何范围内定义函数,因此可以替代|a:T| -> T { a }
:
fn main() {
fn id<T>(a: T) -> T {
a
}
for i in 0..10 {
println!("{}", id(i));
println!("{}", id("Foo"));
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以根据需要重新定义 lambda(尽管我仍然会使用函数):
fn main() {
for i in 0..10 {
let id = |a| a;
println!("{}", id(i));
let id = |a| a;
println!("{}", id("Foo"));
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
147 次 |
最近记录: |