prop_mapChunksM xs n = n > 0 ==>
 runWriter ((enumSpecial xs n (joinI $ Iter.mapChunksM f stream2list)) >>= run)
 == (xs, Sum (P.length xs))
  where f ck = tell (Sum $ P.length ck) >> return ck
        types = xs :: [Int]
{-
prop_mapjoin xs i =
  runIdentity (run (joinI . runIdentity $ enumPure1Chunk xs $ mapStream id i))
  == runner1 (enumPure1Chunk xs i)
  where types = (i :: I, xs :: [Int])
-}
prop_mapChunksM xs n = n > 0 ==>
 runWriter ((enumSpecial xs n (joinI $ Iter.mapChunksM f stream2list)) >>= run)
 == (xs, Sum (P.length xs))
  where f ck = tell (Sum $ P.length ck) >> return ck
        types = xs :: [Int]
{-
prop_mapjoin xs i =
  runIdentity (run (joinI . runIdentity $ enumPure1Chunk xs $ mapStream id i))
  == runner1 (enumPure1Chunk xs i)
  where types = (i :: I, xs :: [Int])
-}
prop_mapChunksM xs n = n > 0 ==>
 runWriter ((enumSpecial xs n (joinI $ Iter.mapChunksM f stream2list)) >>= run)
 == (xs, Sum (P.length xs))
  where f ck = tell (Sum $ P.length ck) >> return ck
        types = xs :: [Int]
{-
prop_mapjoin xs i =
  runIdentity (run (joinI . runIdentity $ enumPure1Chunk xs $ mapStream id i))
  == runner1 (enumPure1Chunk xs i)
  where types = (i :: I, xs :: [Int])
-}