首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QuickCheck道具到美味道具

QuickCheck道具到美味道具
EN

Stack Overflow用户
提问于 2014-04-06 19:46:27
回答 1查看 166关注 0票数 0

我试图从_prop的例子写同样的东西在美味。(来自http://primitive-automaton.logdown.com/posts/142511/tdd-with-quickcheck的例子)

代码语言:javascript
复制
game9_prop :: Game9 -> Bool
game9_prop = (9==) . length . unGame . unGame9

这就是我尝试的美味:

代码语言:javascript
复制
qcTestGengame9 :: TestTree
qcTestGengame9 = QC.testProperty "Better gen rate" $ 
   \ (g :: Game9) -> length . unGame . unGame9 g == 9 --ERROR LINE

此转换将给出以下错误:

代码语言:javascript
复制
test/Tasty.hs:53:11:
Illegal type signature: `Game9'
Perhaps you intended to use -XScopedTypeVariables
In a pattern type-signature

这是Game9类型:

代码语言:javascript
复制
-- To make generation rate better
newtype Game9 = Game9 { unGame9 :: Game }
   deriving (Eq, Show)

instance Arbitrary Game9 where
   arbitrary = (Game9 . Game) `liftM` replicateM 9 arbitrary
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-08 21:43:04

若要修复即时错误,请删除类型注释,即使用

代码语言:javascript
复制
qcTestGengame9 :: TestTree
qcTestGengame9 = QC.testProperty "Better gen rate" $ 
   \ g -> (length . unGame . unGame9) g == 9

表达式unGame9 g已经确保了g :: Game9

但实际上它更简单:使用定义的game9_prop,您可以只使用

代码语言:javascript
复制
qcTestGengame9 :: TestTree
qcTestGengame9 = QC.testProperty "Better gen rate" game9_prop
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22899081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档