haskell 不在范围内:类型构造函数或类'GenUnchecked'

fzwojiic  于 2023-01-17  发布在  其他
关注(0)|答案(1)|浏览(144)

我想使用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来导入它,但是GenUncheckednot listed there,也是not listed on hackage,但是genvalidity的hackage文档把它列在了模块Data.Validity(我导入的)和包genvalidity(我添加到我的package.yaml)中。
也许有一些版本冲突,但我不知道如何检查已安装的软件包的版本,因为我是相当新的haskell。

yqkkidmi

yqkkidmi1#

您正在查看的文档版本是0.5.0.0,它已经有5年的历史了(您可以从URL、标题和页面样式中看出)。The latest version of genvalidity is 1.1.0.0

相关问题