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

如何修复函数合法属性QuickCheck测试中的类型匹配错误

错误出现的原因

  • 函数调用优先级错误:Haskell中函数应用的优先级最高,你写的length search x char会被解析为依次给length传3个参数:search函数、x、char,而非你预期的先计算search x char再取长度。
  • 类型签名不匹配:你声明prop_search的类型是String -> Int -> Int -> Bool,意味着需要接收3个参数,但实际实现只接收了x、char两个参数,Haskell会认为你返回的是还需要接收1个Int参数的函数Int -> Bool,和你实际返回的Bool类型冲突;同时search的第二个参数是Char类型,你签名里写的Int也不符合要求。
  • 冗余的if判断:<=表达式本身返回的就是Bool值,不需要额外套一层if判断。

修复后的代码

prop_search :: String -> Char -> Bool
prop_search x char = length (search x char) <= length x

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:09:02