prop_foldChunksM xs x0 n = n > 0 ==>
 runWriter ((enumSpecial xs n (Iter.foldChunksM f x0)) >>= run)
 == runWriter (f x0 xs)
  where f acc ck = CM.foldM f' acc ck
        f' acc el = tell (Sum 1) >> return (acc+el)
        types = xs :: [Int]
prop_foldChunksM xs x0 n = n > 0 ==>
 runWriter ((enumSpecial xs n (Iter.foldChunksM f x0)) >>= run)
 == runWriter (f x0 xs)
  where f acc ck = CM.foldM f' acc ck
        f' acc el = tell (Sum 1) >> return (acc+el)
        types = xs :: [Int]
prop_foldChunksM xs x0 n = n > 0 ==>
 runWriter ((enumSpecial xs n (Iter.foldChunksM f x0)) >>= run)
 == runWriter (f x0 xs)
  where f acc ck = CM.foldM f' acc ck
        f' acc el = tell (Sum 1) >> return (acc+el)
        types = xs :: [Int]