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

使用checker验证Validation的Applicative实现编译失败如何解决

错误原因

checkers库的applicative函数要求传入的类型占位符(也就是你定义的trigger)的结构必须是f (a, b, c):其中f是你要测试的Applicative实例,三个不同的类型参数a,b,c是用来覆盖applicative定律中不同类型组合的校验场景。
你当前定义的ValidationTyped是Validation String Int,第二个类型参数是Int,不符合要求的三元组结构,所以编译时抛出类型不匹配错误。

解决方案

只需要修改你定义的类型别名,把第二个类型参数调整为任意三元组类型即可,trigger作为类型占位符不需要实际有效值,用undefined不会有运行时问题。
修改后的测试代码如下:

-- 把第二个类型参数改为三元组类型即可,这里用(Int, Int, Int)举例,其他任意三元组都可以
type ValidationTyped = Validation String (Int, Int, Int)
trigger :: ValidationTyped
trigger = undefined

main :: IO ()
main = do
    quickBatch $ applicative trigger

修改后重新编译运行即可正常校验你的Validation Applicative实现是否符合定律。


内容的提问来源于stack exchange,提问作者Calin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:15:03