-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | Haskell 98 natural numbers
--   
--   Haskell 98 natural numbers
@package nats
@version 0.1.2

-- | This module exposes the potentially unsafe operations that are
--   sometimes needed for efficiency: The Natural data constructor and
--   unsafePred.
module Numeric.Natural.Internal
newtype Natural
Natural :: Integer -> Natural
runNatural :: Natural -> Integer

-- | A refinement of Integral to represent types that do not contain
--   negative numbers.
class Integral n => Whole n
toNatural :: Whole n => n -> Natural
unsafePred :: Whole n => n -> n

-- | Church decoding
natural :: a -> (a -> a) -> Natural -> a
instance Typeable Natural
instance Eq Natural
instance Ord Natural
instance Ix Natural
instance Whole Natural
instance Whole Word64
instance Whole Word32
instance Whole Word16
instance Whole Word8
instance Whole Word
instance Integral Natural
instance Enum Natural
instance Real Natural
instance Bits Natural
instance Num Natural
instance Read Natural
instance Show Natural

-- | Natural numbers.
module Numeric.Natural
data Natural

-- | A refinement of Integral to represent types that do not contain
--   negative numbers.
class Integral n => Whole n
toNatural :: Whole n => n -> Natural

-- | Church decoding
natural :: a -> (a -> a) -> Natural -> a
