gpt4 book ai didi

testing - 我如何在 Rust 中模拟 Lisp(应用)或( curry )?

转载 作者:行者123 更新时间:2023-11-29 07:47:47 25 4
gpt4 key购买 nike

我正在移植 QuickCheck到 Rust,我已经编写了除 for_all 之外的所有内容,因为我不确定类型签名应该是什么。

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

它应该打印 +++ OK, passed 100 tests. 如果属性返回 true,否则,它应该打印 *** Failed! 并打印有问题的测试案例值。

最佳答案

在 Rust 中,所有函数都采用固定数量的参数,因此在一般情况下没有与 Lisp 的 apply 等效的东西,但宏可以为您提供您想要的抽象。你可以这样写:

macro_rules! for_all {
( $tester:expr, $( $generator:expr ),* ) => {
$tester( $($generator() ),* )
}
}

然后,for_all!(|a, b| a + b, || 4, || 7) 生成 11

祝你的项目好运!

关于testing - 我如何在 Rust 中模拟 Lisp(应用)或( curry )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9271924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com