首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >test.check中的函数生成器

test.check中的函数生成器
EN

Stack Overflow用户
提问于 2016-11-15 13:20:07
回答 2查看 118关注 0票数 0

我想制造一台发电机来发挥作用。

我注意到确实存在用于IFn值的生成器,但是当函数域是无限的(而且由于这些值是严格的)时,通常将它们用作函数的生成器是不实际的。

这个功能是否存在,还是我必须自己实现?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-15 15:47:24

我认为答案取决于你期望这个函数会有什么样的行为。通常,您可以使用gen/letgen/fmap根据生成的值创建任意函数。例如,您可以生成一个值列表,并使用它构造一个函数,该函数根据输入的hash从列表中选择某些内容:

代码语言:javascript
复制
(gen/let [rets (gen/not-empty (gen/vector gen/any))]
  (fn [x]
    (rets (mod (hash x) (count rets)))))
票数 2
EN

Stack Overflow用户

发布于 2016-11-18 17:43:50

在gfrederick的基础上构建一个更完整的解决方案:

代码语言:javascript
复制
(defn fn-gen
  ([result-gen results-n result-scale]
   (gen/fmap
    (fn [results] (fn [& args] (get results (mod (apply + (map hash args)) results-n))))
    (gen/vector (gen/scale (partial + result-scale) result-gen) results-n)))
  ([result-gen result-n] (fn-gen result-gen result-n 10))
  ([result-gen] (fn-gen result-gen 10)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40610856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档