{-# 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