coordinate-0.0.18: A representation of latitude and longitude

Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Geo.Coordinate.DegreesLongitude

Synopsis

Documentation

data DegreesLongitude Source

Instances

Eq DegreesLongitude 
Ord DegreesLongitude 
Show DegreesLongitude 
AsDegreesLongitude p f DegreesLongitude 
(Choice p, Applicative f) => AsCoordinate p f (Double, (DegreesLongitude, Minutes, Seconds)) 
(Profunctor p, Functor f) => AsCoordinate p f ((DegreesLongitude, Minutes, Seconds), (DegreesLatitude, Minutes, Seconds)) 
(Profunctor p, Functor f) => AsCoordinate p f ((DegreesLatitude, Minutes, Seconds), (DegreesLongitude, Minutes, Seconds)) 
(Profunctor p, Functor f) => AsCoordinate p f ((DegreesLongitude, Minutes, Seconds), Latitude) 
(Profunctor p, Functor f) => AsCoordinate p f (Latitude, (DegreesLongitude, Minutes, Seconds)) 
(Profunctor p, Functor f) => AsLongitude p f (DegreesLongitude, Minutes, Seconds)

An isomorphism on the triple of degrees longitude, minutes, seconds to a longitude.

>>> do deg <- (7 :: Int) ^? _DegreesLongitude; min <- (7 :: Int) ^? _Minutes; sec <- (7 :: Double) ^? _Seconds; (deg, min, sec) ^? _Longitude :: Maybe Longitude
Just (Longitude (DegreesLongitude 7) (Minutes 7) (Seconds 7.0000))
>>> do deg <- (179 :: Int) ^? _DegreesLongitude; min <- (59 :: Int) ^? _Minutes; sec <- (59 :: Double) ^? _Seconds; (deg, min, sec) ^? _Longitude :: Maybe Longitude
Just (Longitude (DegreesLongitude 179) (Minutes 59) (Seconds 59.0000))
>>> do deg <- (-7 :: Int) ^? _DegreesLongitude; min <- (7 :: Int) ^? _Minutes; sec <- (7 :: Double) ^? _Seconds; (deg, min, sec) ^? _Longitude :: Maybe Longitude
Just (Longitude (DegreesLongitude (-7)) (Minutes 7) (Seconds 7.0000))
>>> do deg <- (-179 :: Int) ^? _DegreesLongitude; min <- (59 :: Int) ^? _Minutes; sec <- (59 :: Double) ^? _Seconds; (deg, min, sec) ^? _Longitude :: Maybe Longitude
Just (Longitude (DegreesLongitude (-179)) (Minutes 59) (Seconds 59.0000))
>>> do deg <- (180 :: Int) ^? _DegreesLongitude; min <- (59 :: Int) ^? _Minutes; sec <- (59 :: Double) ^? _Seconds; (deg, min, sec) ^? _Longitude :: Maybe Longitude
Nothing
>>> do deg <- (179 :: Int) ^? _DegreesLongitude; min <- (60 :: Int) ^? _Minutes; sec <- (59 :: Double) ^? _Seconds; (deg, min, sec) ^? _Longitude :: Maybe Longitude
Nothing
>>> do deg <- (179 :: Int) ^? _DegreesLongitude; min <- (59 :: Int) ^? _Minutes; sec <- (60 :: Double) ^? _Seconds; (deg, min, sec) ^? _Longitude :: Maybe Longitude
Nothing
>>> fmap (\x -> _Longitude # x :: (DegreesLongitude, Minutes, Seconds))  ((7 :: Double) ^? _Longitude :: Maybe Longitude)
Just (DegreesLongitude 7,Minutes 0,Seconds 0.0000)
>>> fmap (\x -> _Longitude # x :: (DegreesLongitude, Minutes, Seconds))  ((7.12 :: Double) ^? _Longitude :: Maybe Longitude)
Just (DegreesLongitude 7,Minutes 7,Seconds 12.0000)

class AsDegreesLongitude p f s where Source

Minimal complete definition

Nothing

Instances

(Choice p, Applicative f) => AsDegreesLongitude p f Int

A prism on degrees longitude to an integer between -180 and 180 exclusive.

>>> (7 :: Int) ^? _DegreesLongitude
Just (DegreesLongitude 7)
>>> (0 :: Int) ^? _DegreesLongitude
Just (DegreesLongitude 0)
>>> (179 :: Int) ^? _DegreesLongitude
Just (DegreesLongitude 179)
>>> (180 :: Int) ^? _DegreesLongitude
Nothing
>>> (-179 :: Int) ^? _DegreesLongitude
Just (DegreesLongitude (-179))
>>> (-180 :: Int) ^? _DegreesLongitude
Nothing
all (\m -> _DegreesLongitude # m == (n :: Int)) (n ^? _DegreesLongitude)
AsDegreesLongitude p f DegreesLongitude 
((~) (* -> * -> *) p (->), Functor f) => AsDegreesLongitude p f Longitude 
((~) (* -> * -> *) p (->), Functor f) => AsDegreesLongitude p f Coordinate 

remDegreesLongitude :: Int -> DegreesLongitude Source

Setting a value >= 180 will get that value (rem 180).

>>> remDegreesLongitude 7
DegreesLongitude 7
>>> remDegreesLongitude 0
DegreesLongitude 0
>>> remDegreesLongitude 180
DegreesLongitude 0
>>> remDegreesLongitude 1
DegreesLongitude 1
>>> remDegreesLongitude 179
DegreesLongitude 179