2024年Clojure现状调查中分享您的想法!

欢迎!请参阅关于页面,了解更多关于如何使用此工作的信息。

0
test.check

test.check 为一阶类型提供了生成器,但并未提供函数的生成器。

在原版的QuickCheck中,有一个额外的类型类("Arbitrary")用于处理
函数。

如果我实现这个并在提交补丁,是否有可能被纳入其中?

背景:我在这里编写了自己的Clojure QuickCheck克隆

https://bitbucket.org/sperber/deinprogramm.quickcheck

这包括了一些arbitrary库和函数生成器,但并没有test.check的所有优点。

我正在考虑是否要继续维护我的QuickCheck克隆,还是
相反,为test.check做出贡献,所以任何反馈都将非常受欢迎。

5 个答案

0

评论人:reiddraper

我非常想为这个特性添加一个补丁!你愿意先写一个快速实现提案,这样我们就可以在我们看代码之前先讨论任何架构细节吗?

0

评论人:sperber

你愿意以我的QuickCheck克隆作为起点吗?它的一般实现方法与你的是非常相似的,所以我认为你会感觉非常适应。

需要注意的是,它引入了一个与生成器分开的类型——“任意”,对应于Haskell代码中的“Arbitrary'类型类”。这样做会改变test.check'的API,所以在那里,应该通过一个可选的“转换器”字段扩展“Generator'类型。

0

评论人:reiddraper

当然,我已经简要阅读过,但需要更仔细地阅读。你的实现是如何处理打印(显示)函数的?函数会缩小吗?你看到过(链接:http://dl.acm.org/citation.cfm?id=2364516 文档:由Claessen所著的“显示和缩小函数”)了吗?

0

评论人:sperber

是的。尚未实现,但我会把它列入计划。鉴于在Clojure中函数是对象,我认为打印应该比Haskell要容易一些。

0
参考:[链接](https://clojure.atlassian.net/browse/TCHECK-38)(由ale+x导入报告)
...