module Data.Geo.Route.Elevation(
Elevation
, HasElevation(..)
, HasElevations(..)
, elevationIso
, (<^>)
) where
import Prelude(Show(show), Num, Real, Enum, Integral)
import Data.Eq(Eq)
import Data.Function(id)
import Data.Geo.Route.Gpx(Gpx(gpx))
import Data.Int(Int)
import Data.List((++))
import Data.Ord(Ord)
import Control.Lens(Lens', Iso', Traversal', iso, set)
newtype Elevation =
Elevation
Int
deriving (Eq, Ord, Show, Num, Real, Enum, Integral)
elevationIso ::
Iso' Int Elevation
elevationIso =
iso Elevation (\(Elevation s) -> s)
class HasElevation t where
elevation ::
Lens' t Elevation
instance HasElevation Elevation where
elevation =
id
class HasElevations t where
elevations ::
Traversal' t Elevation
instance HasElevations Elevation where
elevations =
id
instance Gpx Elevation where
gpx (Elevation e) =
"<ele>" ++ show e ++ "</ele>"
(<^>) ::
HasElevations t =>
Elevation
-> t
-> t
(<^>) =
set elevations
infixr 5 <^>