{-# OPTIONS_GHC -fno-warn-orphans #-}

module Data.GenValidity.DList () where

import Data.DList (DList)
import qualified Data.DList as DList
import Data.GenValidity (GenValid (..))
import Data.Validity.DList ()

instance (GenValid a) => GenValid (DList a) where
  genValid :: Gen (DList a)
genValid = [a] -> DList a
forall a. [a] -> DList a
DList.fromList ([a] -> DList a) -> Gen [a] -> Gen (DList a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen [a]
forall a. GenValid a => Gen a
genValid
  shrinkValid :: DList a -> [DList a]
shrinkValid = ([a] -> DList a) -> [[a]] -> [DList a]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [a] -> DList a
forall a. [a] -> DList a
DList.fromList ([[a]] -> [DList a]) -> (DList a -> [[a]]) -> DList a -> [DList a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> [[a]]
forall a. GenValid a => a -> [a]
shrinkValid ([a] -> [[a]]) -> (DList a -> [a]) -> DList a -> [[a]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DList a -> [a]
forall a. DList a -> [a]
DList.toList