{-# LANGUAGE GeneralizedNewtypeDeriving, MultiParamTypeClasses #-}

-- | A latitude on earth in degrees.
module Data.Geo.Latitude(
                          Latitude,
                          latitude
                        ) where

import Data.Geo.Accessor.Value
import Data.Fixed

newtype Latitude = Latitude Double
  deriving (Eq, Ord, Enum, Show, Num, Fractional, Floating)

-- | Construct a latitude using the given number of degrees between -90 and 90.
latitude :: Double -> Latitude
latitude x = Latitude ((x + 90) `mod'` 180 - 90)

instance Value Latitude Double where
  value (Latitude x) = x