{-# LANGUAGE TemplateHaskell #-}
-- | Inhabited types
module Data.Inhabited where
import Data.Complex
import Data.Int
import Data.Word
import Data.Inhabited.TH
-- | Inhabited types
class Inhabited a
where
-- | Example value. An example value does not have to be an agreed-upon
-- default value. It can really be any value whatsoever.
example :: a
instance Inhabited Bool where example = False
instance Inhabited Int8 where example = 0
instance Inhabited Int16 where example = 0
instance Inhabited Int32 where example = 0
instance Inhabited Int64 where example = 0
instance Inhabited Word8 where example = 0
instance Inhabited Word16 where example = 0
instance Inhabited Word32 where example = 0
instance Inhabited Word64 where example = 0
instance Inhabited Float where example = 0
instance Inhabited Double where example = 0
instance Inhabited (Complex Float) where example = 0
instance Inhabited (Complex Double) where example = 0
inhabitedTupleInstances 15