相关疑难解决方法(0)

如何在 Rust 中实现多级柯里化函数?

我尝试在 Rust 中实现类似于函数式编程术语的柯里化函数:

fn add_origin(x: i32) -> impl Fn(i32) -> i32 {
    return move |y| {
        x + y
    };
}

fn main() {
    let add5 = add_origin(5);
    println!("Call closure: {}", add5(6));
}
Run Code Online (Sandbox Code Playgroud)

这是可行的,但如果我再更深一层:

fn add(x: i32) -> impl Fn(i32) -> impl Fn(i32) -> i32 {
    return move |y: i32| {
        return move |z: i32| {
            x + y + z
        }
    };
}

fn main() {
    let add5 = add(5);
    let add5_10 = add5(10);
    println!("Call closure: {}", add5_10(6)); …
Run Code Online (Sandbox Code Playgroud)

closures functional-programming function currying rust

8
推荐指数
1
解决办法
3382
查看次数

如何在Rust中模拟Lisp(apply)或(curry)?

我正在将QuickCheck移植到Rust,我写了一切,除非for_all我不确定类型签名应该是什么.

我知道,一般来说,for_all将接受属性lambda和生成器lambda的集合.它将评估生成器以创建随机测试用例以将属性作为输入.

它应该打印+++ OK, passed 100 tests.,如果属性返回true,否则要打印*** Failed!,打印违规测试用例值.

testing quickcheck rust

7
推荐指数
2
解决办法
2645
查看次数