{-# LANGUAGE GeneralizedNewtypeDeriving, MultiParamTypeClasses #-}

-- | An elevation in metres, above 0.
module Data.Geo.Elevation(
                           Elevation,
                           elevation
                         ) where

import Data.Geo.Accessor.Value

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

-- | Construct an elevation with the given number of metres.
elevation :: Double -> Elevation
elevation = Elevation . abs

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