Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data Latitude
- class AsLatitude p f s where
- modLatitude :: Int -> Int -> Double -> Latitude
- antipodeLatitude :: Iso' Latitude Latitude
Documentation
Eq Latitude Source | |
Ord Latitude Source | |
Show Latitude Source | |
((~) (* -> * -> *) p (->), Functor f) => AsSeconds p f Latitude Source | |
((~) (* -> * -> *) p (->), Functor f) => AsMinutes p f Latitude Source | |
((~) (* -> * -> *) p (->), Functor f) => AsDegreesLatitude p f Latitude Source | |
AsLatitude p f Latitude Source | |
(Choice p, Applicative f) => AsCoordinate p f (Latitude, Double) Source | |
(Profunctor p, Functor f) => AsCoordinate p f ((DegreesLongitude, Minutes, Seconds), Latitude) Source | |
(Profunctor p, Functor f) => AsCoordinate p f (Latitude, (DegreesLongitude, Minutes, Seconds)) Source | |
(Profunctor p, Functor f) => AsCoordinate p f (Longitude, Latitude) Source | |
(Profunctor p, Functor f) => AsCoordinate p f (Latitude, Longitude) Source |
class AsLatitude p f s where Source
Nothing
(Choice p, Applicative f) => AsLatitude p f Double Source | A prism on latitude to a double between -90 and 90 exclusive.
|
AsLatitude p f Latitude Source | |
((~) (* -> * -> *) p (->), Functor f) => AsLatitude p f Coordinate Source | |
(Profunctor p, Functor f) => AsLatitude p f (DegreesLatitude, Minutes, Seconds) Source | An isomorphism on the triple of degrees latitude, minutes, seconds to a latitude.
|
modLatitude :: Int -> Int -> Double -> Latitude Source
Setting a latitude using modulo arithmetic.
>>>
modLatitude 20 20 20
Latitude (DegreesLatitude 20) (Minutes 20) (Seconds 20.0000)
>>>
modLatitude 20 20 (-20)
Latitude (DegreesLatitude 20) (Minutes 19) (Seconds 40.0000)
>>>
modLatitude 20 20 80
Latitude (DegreesLatitude 20) (Minutes 21) (Seconds 20.0000)
>>>
modLatitude 20 80 20
Latitude (DegreesLatitude 21) (Minutes 20) (Seconds 20.0000)
>>>
modLatitude 20 80 80
Latitude (DegreesLatitude 21) (Minutes 21) (Seconds 20.0000)
>>>
modLatitude 20 80 (-20)
Latitude (DegreesLatitude 21) (Minutes 19) (Seconds 40.0000)
>>>
modLatitude 110 20 20
Latitude (DegreesLatitude (-70)) (Minutes 20) (Seconds 20.0000)
>>>
modLatitude 110 20 80
Latitude (DegreesLatitude (-70)) (Minutes 21) (Seconds 20.0000)
>>>
modLatitude 110 80 20
Latitude (DegreesLatitude (-69)) (Minutes 20) (Seconds 20.0000)
>>>
modLatitude 110 20 (-20)
Latitude (DegreesLatitude (-70)) (Minutes 19) (Seconds 40.0000)
>>>
modLatitude 110 (-20) (-20)
Latitude (DegreesLatitude (-71)) (Minutes 39) (Seconds 40.0000)
>>>
modLatitude 110 (-80) (-20)
Latitude (DegreesLatitude (-72)) (Minutes 39) (Seconds 40.0000)
>>>
modLatitude 20 20 3620
Latitude (DegreesLatitude 21) (Minutes 20) (Seconds 20.0000)
>>>
modLatitude 20 20 (-3580)
Latitude (DegreesLatitude 19) (Minutes 20) (Seconds 20.0000)
>>>
modLatitude 110 20 3620
Latitude (DegreesLatitude (-69)) (Minutes 20) (Seconds 20.0000)
>>>
modLatitude 110 20 (-3580)
Latitude (DegreesLatitude (-71)) (Minutes 20) (Seconds 20.0000)
antipodeLatitude :: Iso' Latitude Latitude Source
The latitude that is symmetrical around the equator.
>>>
fmap (\x -> antipodeLatitude # x) (do d <- (7 :: Int) ^? _DegreesLatitude; m <- (7 :: Int) ^? _Minutes; s <- (7 :: Double) ^? _Seconds; (d, m, s) ^? _Latitude :: Maybe Latitude)
Just (Latitude (DegreesLatitude (-7)) (Minutes 7) (Seconds 7.0000))