我正在定义一个TestList(HUnit),并希望将定义分布在多行上。我找到了以下解决方案:
tests = TestList ([TestLabel "test1" test1] ++
[TestLabel "test2" test2] ++
[TestLabel "test3" test3] ++
[TestLabel "test4" test4] ++
[TestLabel "test5" test5])
++
运算符是否适合这样做?答案 0 :(得分:23)
我会写
tests = TestList
[ TestLabel "test1" test1
, TestLabel "test2" test2
, TestLabel "test3" test3
, TestLabel "test4" test4
, TestLabel "test5" test5 ]
答案 1 :(得分:10)
@ephemient变体还有改进之处:根本不要使用TestLabel
,使用~:
快捷方式:
tests = TestList
[ "test1" ~: test1
, "test2" ~: test2
, "test3" ~: test3
, "test4" ~: test4
, "test5" ~: test5 ]
请注意,构造断言的运算符更多:@?
,@=?
,@?=
。有关详细信息,请参阅http://hunit.sourceforge.net/HUnit-1.0/Guide.html或http://hackage.haskell.org/package/HUnit。这些快捷方式巧妙地使用优先级和类型类,因此您可以通过稍微差一些的错误消息来减少括号噪声。
答案 2 :(得分:5)
也许我错过了什么,但为什么不只是逗号?这似乎与正常列表不同。
tests = TestList ([TestLabel "test1" test1,
TestLabel "test2" test2,
TestLabel "test3" test3,
TestLabel "test4" test4,
TestLabel "test5" test5])