Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data Longitude
- class AsLongitude p f s where
- _Longitude :: Optic' p f s Longitude
- modLongitude :: Int -> Int -> Double -> Longitude
- antipodeLongitude :: Iso' Longitude Longitude
Documentation
Eq Longitude Source | |
Ord Longitude Source | |
Show Longitude Source | |
((~) (* -> * -> *) p (->), Functor f) => AsSeconds p f Longitude Source | |
((~) (* -> * -> *) p (->), Functor f) => AsMinutes p f Longitude Source | |
((~) (* -> * -> *) p (->), Functor f) => AsDegreesLongitude p f Longitude Source | |
AsLongitude p f Longitude Source | |
(Choice p, Applicative f) => AsCoordinate p f (Double, Longitude) Source | |
(Profunctor p, Functor f) => AsCoordinate p f (Longitude, (DegreesLatitude, Minutes, Seconds)) Source | |
(Profunctor p, Functor f) => AsCoordinate p f ((DegreesLatitude, Minutes, Seconds), Longitude) Source | |
(Profunctor p, Functor f) => AsCoordinate p f (Longitude, Latitude) Source | |
(Profunctor p, Functor f) => AsCoordinate p f (Latitude, Longitude) Source |
class AsLongitude p f s where Source
Nothing
_Longitude :: Optic' p f s Longitude Source
(Choice p, Applicative f) => AsLongitude p f Double Source | A prism on longitude to a double between -180 and 180 exclusive.
|
AsLongitude p f Longitude Source | |
((~) (* -> * -> *) p (->), Functor f) => AsLongitude p f Coordinate Source | |
(Profunctor p, Functor f) => AsLongitude p f (DegreesLongitude, Minutes, Seconds) Source | An isomorphism on the triple of degrees longitude, minutes, seconds to a longitude.
|
modLongitude :: Int -> Int -> Double -> Longitude Source
Setting a longitude using modulo arithmetic.
>>>
modLongitude 20 20 20
Longitude (DegreesLongitude 20) (Minutes 20) (Seconds 20.0000)
>>>
modLongitude 20 20 (-20)
Longitude (DegreesLongitude 20) (Minutes 19) (Seconds 40.0000)
>>>
modLongitude 20 20 80
Longitude (DegreesLongitude 20) (Minutes 21) (Seconds 20.0000)
>>>
modLongitude 20 80 20
Longitude (DegreesLongitude 21) (Minutes 20) (Seconds 20.0000)
>>>
modLongitude 20 80 80
Longitude (DegreesLongitude 21) (Minutes 21) (Seconds 20.0000)
>>>
modLongitude 20 80 (-20)
Longitude (DegreesLongitude 21) (Minutes 19) (Seconds 40.0000)
>>>
modLongitude 200 20 20
Longitude (DegreesLongitude (-160)) (Minutes 20) (Seconds 20.0000)
>>>
modLongitude 200 20 80
Longitude (DegreesLongitude (-160)) (Minutes 21) (Seconds 20.0000)
>>>
modLongitude 200 80 20
Longitude (DegreesLongitude (-159)) (Minutes 20) (Seconds 20.0000)
>>>
modLongitude 200 20 (-20)
Longitude (DegreesLongitude (-160)) (Minutes 19) (Seconds 40.0000)
>>>
modLongitude 200 (-20) (-20)
Longitude (DegreesLongitude (-161)) (Minutes 39) (Seconds 40.0000)
>>>
modLongitude 200 (-80) (-20)
Longitude (DegreesLongitude (-162)) (Minutes 39) (Seconds 40.0000)
>>>
modLongitude 20 20 3620
Longitude (DegreesLongitude 21) (Minutes 20) (Seconds 20.0000)
>>>
modLongitude 20 20 (-3580)
Longitude (DegreesLongitude 19) (Minutes 20) (Seconds 20.0000)
>>>
modLongitude 200 20 3620
Longitude (DegreesLongitude (-159)) (Minutes 20) (Seconds 20.0000)
>>>
modLongitude 200 20 (-3580)
Longitude (DegreesLongitude (-161)) (Minutes 20) (Seconds 20.0000)
antipodeLongitude :: Iso' Longitude Longitude Source
The longitude that is symmetrical around the prime meridian.
>>>
fmap (\x -> antipodeLongitude # x) (do d <- (7 :: Int) ^? _DegreesLongitude; m <- (7 :: Int) ^? _Minutes; s <- (7 :: Double) ^? _Seconds; (d, m, s) ^? _Longitude :: Maybe Longitude)
Just (Longitude (DegreesLongitude (-7)) (Minutes 7) (Seconds 7.0000))