module Data.Empty where
import qualified Data.NonEmpty.Class as C
import qualified Data.Traversable as Trav
import qualified Data.Foldable as Fold
import Control.Applicative (pure, )
import Control.DeepSeq (NFData, rnf, )
import qualified Test.QuickCheck as QC
data T a = Cons
deriving (Eq, Ord)
instance Show (T a) where
show Cons = "Empty.Cons"
instance C.Show T where
showsPrec _p Cons = showString "Empty.Cons"
instance Functor T where
fmap _ Cons = Cons
instance Fold.Foldable T where
foldr _ y Cons = y
instance Trav.Traversable T where
sequenceA Cons = pure Cons
instance C.ViewL T where
viewL _ = Nothing
instance C.ViewR T where
viewR _ = Nothing
instance C.View T where
instance QC.Arbitrary (T a) where
arbitrary = return Cons
shrink _ = []
instance C.Arbitrary T where
arbitrary = return Cons
shrink _ = []
instance C.Gen T where
genOf _gen = return Cons
instance C.Empty T where
empty = Cons
instance C.Zip T where
zipWith _f Cons Cons = Cons
instance C.Reverse T where reverse = id
instance C.Sort T where
sort Cons = Cons
instance C.SortBy T where
sortBy _ Cons = Cons
{-
This instance allows us to use @transposeClip@ on fixed sized containers.
-}
instance C.Repeat T where
repeat _ = Cons
{-
This instance allows us to iterate on fixed length lists.
-}
instance C.Iterate T where
iterate _ _ = Cons
instance C.NFData T where
rnf Cons = ()
instance NFData (T a) where
rnf Cons = ()