我有shuffle
的{{1}}函数:
Array
它将shuffle:: forall e. Array -> Eff (random :: RANDOM | e) Array
monad中的数组混洗并返回包装的数组。我想测试数组是否被洗牌,比较结果是不同的,所以我写的快速检查代码如下:
Control.Monad.Eff.Random
但是,我不确定如何编写quickCheck \arr -> isShuffled (shuffle arr)
来匹配类型定义。时间:
isShuffled
中没有像fromJust
这样的展开功能,所以它必须接受Maybe
并返回Random Array
,而我将检查代码放入Monadic表达
因此,Random Boolean
的结果不会是isShuffled
,而是Boolean
m Boolean
Testable
中没有合适的purescript-quickcheck
,因此我可能需要为其创建一个实例,而QuickCheck中的注释指的是:
m Boolean
(code)
但是,我再次无法从A testable property is a function of zero or more Arbitrary arguments, returning a Boolean or Result.
monad中提取/解包值,我不知道如何访问其中的布尔值并实现像Random
这样的<{1}}中的testableRandomArray
或Boolean
,除非我使用了一些不安全的功能。
我想我应该&#34;嵌入&#34;随机monad中的Result
行,所以我可以访问它洗牌的纯数组。但是,由于生成测试夹具是Random Boolean
,我觉得这很奇怪,没办法做到这一点。