You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用validity进行属性测试时遇GenUnchecked未识别问题求助

解决Validity库中GenUnchecked找不到的编译错误

问题根源:版本差异

GenUnchecked类型类在较新的genvalidity版本中才被移到Data.Validity模块,旧版本里它属于Data.GenValidity模块。如果你安装的是旧版,直接从Data.Validity导入自然找不到。

步骤1:查看已安装的genvalidity版本

在命令行执行对应命令,查看当前项目依赖的版本:

# Cabal项目
cabal list --installed genvalidity
# Stack项目
stack list-dependencies | grep genvalidity

Stack用户也可以直接查看stack.yaml的快照版本,或者package.yaml里的genvalidity版本约束。

步骤2:调整导入或版本

情况A:使用旧版本genvalidity(< 1.0)

旧版本中,GenUnchecked和GenValid都在Data.GenValidity模块,修改导入语句即可:

import Data.Validity (Validity(..))
import Data.GenValidity (GenUnchecked(..), GenValid(..))

情况B:升级到新版本genvalidity(>= 1.0)

如果想匹配Hackage文档的内容,需要升级依赖:

  1. 在package.yaml中指定版本约束:
    dependencies:
      - genvalidity >= 1.0
    
  2. 重新构建项目:
    # Cabal用户
    cabal update && cabal build
    # Stack用户
    stack update && stack build
    
    升级后,从Data.Validity导入GenUnchecked和GenValid就能正常编译了。

额外提示

如果是Stack项目,要确保使用的快照包含足够新的genvalidity版本,否则可能需要在stack.yaml的extra-deps中手动添加指定版本的genvalidity。

内容的提问来源于stack exchange,提问作者Good Night Nerd Pride

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 02:25:16