如何通过PureScript中的效果包装QuickCheck值?

时间:2017-04-29 07:40:12

标签: quickcheck purescript

我有shuffle的{​​{1}}函数:

Array

它将shuffle:: forall e. Array -> Eff (random :: RANDOM | e) Array monad中的数组混洗并返回包装的数组。我想测试数组是否被洗牌,比较结果是不同的,所以我写的快速检查代码如下:

Control.Monad.Eff.Random

但是,我不确定如何编写quickCheck \arr -> isShuffled (shuffle arr) 来匹配类型定义。时间:

  1. isShuffled中没有像fromJust这样的展开功能,所以它必须接受Maybe并返回Random Array,而我将检查代码放入Monadic表达

  2. 因此,Random Boolean的结果不会是isShuffled,而是Boolean

  3. m Boolean Testable中没有合适的purescript-quickcheck,因此我可能需要为其创建一个实例,而QuickCheck中的注释指的是:

    m Booleancode

  4. 但是,我再次无法从A testable property is a function of zero or more Arbitrary arguments, returning a Boolean or Result. monad中提取/解包值,我不知道如何访问其中的布尔值并实现像Random这样的<{1}}中的testableRandomArrayBoolean,除非我使用了一些不安全的功能。

  5. 我想我应该&#34;嵌入&#34;随机monad中的Result行,所以我可以访问它洗牌的纯数组。但是,由于生成测试夹具是Random Boolean,我觉得这很奇怪,没办法做到这一点。

0 个答案:

没有答案