----------------------------------------------------------------------------- -- -- Module : Data.Default.Util -- Copyright : (c) 2014-16 Brian W Bush -- License : MIT -- -- Maintainer : Brian W Bush -- Stability : Stable -- Portability : Portable -- -- | Default numeric values. -- ----------------------------------------------------------------------------- {-# LANGUAGE Safe #-} module Data.Default.Util ( -- * Classes Zero(..) , Unknown(..) -- * Values , nan , inf , infNegative ) where -- | Class for zero values. class Zero a where -- | The zero value. zero :: a -- | Not a number. nan :: RealFloat a => a nan = realToFrac (read "NaN" :: Double) -- | Positive infinity. inf :: RealFloat a => a inf = realToFrac (read "Infinity" :: Double) -- | Negative infinity. infNegative :: RealFloat a => a infNegative = realToFrac (read "-Infinity" :: Double) -- | Unknown value. class Unknown a where unknown :: a instance Unknown Int where unknown = 0 instance Unknown Integer where unknown = 0 instance Unknown Float where unknown = nan instance Unknown Double where unknown = nan