Haskell: QuickCheck property fails tests using implications

允我心安 提交于 2019-12-05 07:23:56

Preconditions that are difficult to meet by generating random test cases are often a bad idea in QuickCheck. Instead, you should use generators carefully to construct test cases that meet the precondition automatically.

For example, in this case, you can use forAll to generate the second list to be of the same length as the first list:

prop_zip' (xs :: [a]) =
  forAll (vectorOf (length xs) arbitrary) $ \ (ys :: [a]) ->
  unzip (zip xs ys) == (xs, ys)

(I'm additionally using ScopedTypeVariables here to determine the type of the second list. You might want to change this to suit your specific needs.)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!