module Data.Sequence.Coarbitrary where

import Data.Sequence
import Test.QuickCheck
import Prelude hiding (seq)

seq :: (a -> Gen b -> Gen b) -> Seq a -> Gen b -> Gen b
seq f s = case viewl s of
  EmptyL -> variant (0 :: Int)
  a :< rest -> variant (1 :: Int) . f a . seq f rest