我想使用validity设置基于属性的测试,但我甚至无法从文档中编译这个简单的示例:
module PrimeSpec where
import Data.GenValidity
import Data.Validity
import Data.Numbers.Primes
import Test.QuickCheck
newtype Prime = Prime Int
instance Validity Prime where
validate (Prime n) = declare "The 'Int' is prime." $ isPrime n
instance GenUnchecked Prime where
genUnchecked = Prime <$> arbitrary
instance GenValid Prime where
genValid = Prime <$> (oneof [
pure 2,
((\y -> 2 * abs y + 1) <$> arbitrary) `suchThat` isPrime])
上面的代码失败,返回:
Not in scope: type constructor or class `GenUnchecked'
|
13 | instance GenUnchecked Prime where
| ^^^^^^^^^^^^
所以我想我需要导入它,我通常通过hoogle来导入它,但是GenUnchecked
是not listed there,也是not listed on hackage,但是genvalidity
的hackage文档把它列在了模块Data.Validity
(我导入的)和包genvalidity
(我添加到我的package.yaml
)中。
也许有一些版本冲突,但我不知道如何检查已安装的软件包的版本,因为我是相当新的haskell。
1条答案
按热度按时间yqkkidmi1#
您正在查看的文档版本是0.5.0.0,它已经有5年的历史了(您可以从URL、标题和页面样式中看出)。The latest version of
genvalidity
is 1.1.0.0。