coordinate-0.0.17: A representation of latitude and longitude

Safe HaskellNone
LanguageHaskell2010

Data.Geo.Coordinate.Latitude

Documentation

data Latitude Source

Instances

class AsLatitude p f s where Source

Minimal complete definition

Nothing

Instances

(Choice p, Applicative f) => AsLatitude p f Double

A prism on latitude to a double between -90 and 90 exclusive.

>>> (7 :: Double) ^? _Latitude :: Maybe Latitude
Just (Latitude (DegreesLatitude 7) (Minutes 0) (Seconds 0.0000))
>>> (-7 :: Double) ^? _Latitude :: Maybe Latitude
Just (Latitude (DegreesLatitude (-7)) (Minutes 0) (Seconds 0.0000))
>>> (7.12 :: Double) ^? _Latitude :: Maybe Latitude
Just (Latitude (DegreesLatitude 7) (Minutes 7) (Seconds 12.0000))
>>> (-7.12 :: Double) ^? _Latitude :: Maybe Latitude
Just (Latitude (DegreesLatitude (-7)) (Minutes 7) (Seconds 12.0000))
>>> fmap (\x -> _Latitude # x :: Double) ((7.12 :: Double) ^? _Latitude :: Maybe Latitude)
Just 7.12
>>> fmap (\x -> _Latitude # x :: Double) ((-7.12 :: Double) ^? _Latitude :: Maybe Latitude)
Just (-7.12)
>>> (90 :: Double) ^? _Latitude :: Maybe Latitude
Nothing
>>> (-90 :: Double) ^? _Latitude :: Maybe Latitude
Nothing
>>> (15.63791 :: Double) ^? _Latitude :: Maybe Latitude
Just (Latitude (DegreesLatitude 15) (Minutes 38) (Seconds 16.4760))
>>> (89.1 :: Double) ^? _Latitude :: Maybe Latitude
Just (Latitude (DegreesLatitude 89) (Minutes 5) (Seconds 60.0000))
>>> (89.2 :: Double) ^? _Latitude :: Maybe Latitude
Just (Latitude (DegreesLatitude 89) (Minutes 12) (Seconds 0.0000))
>>> fmap (\x -> _Latitude # x :: Double) (do deg <- (7 :: Int) ^? _DegreesLatitude; min <- (7 :: Int) ^? _Minutes; sec <- (7 :: Double) ^? _Seconds; (deg, min, sec) ^? _Latitude :: Maybe Latitude)
Just 7.118611111111111
>>> fmap (\x -> _Latitude # x  :: Double) (do deg <- (89 :: Int) ^? _DegreesLatitude; min <- (15 :: Int) ^? _Minutes; sec <- (6 :: Double) ^? _Seconds; (deg, min, sec) ^? _Latitude :: Maybe Latitude)
Just 89.25166666666667
AsLatitude p f Latitude 
((~) (* -> * -> *) p (->), Functor f) => AsLatitude p f Coordinate 
(Choice p, Applicative f) => AsLatitude p f (Radian Double)

A prism on latitude to a double between -π2 and π2 exclusive.

>>> (0.2 :: Radian Double) ^? _Latitude
Just (Latitude (DegreesLatitude 11) (Minutes 27) (Seconds 32.9612))
>>> (1.3 :: Radian Double) ^? _Latitude
Just (Latitude (DegreesLatitude 74) (Minutes 29) (Seconds 4.2481))
>>> (-1.3 :: Radian Double) ^? _Latitude
Just (Latitude (DegreesLatitude (-74)) (Minutes 29) (Seconds 4.2481))
>>> (1.5707963 :: Radian Double) ^? _Latitude
Just (Latitude (DegreesLatitude 89) (Minutes 59) (Seconds 59.9945))
>>> (1.58 :: Radian Double) ^? _Latitude
Nothing
>>> (-1.58 :: Radian Double) ^? _Latitude
Nothing
>>> fmap (\x -> _Latitude # x  :: Radian Double) (do deg <- (7 :: Int) ^? _DegreesLatitude; min <- (7 :: Int) ^? _Minutes; sec <- (7 :: Double) ^? _Seconds; (deg, min, sec) ^? _Latitude :: Maybe Latitude)
Just (Radian 0.12424320205794079)
>>> fmap (\x -> _Latitude # x  :: Radian Double) (do deg <- (89 :: Int) ^? _DegreesLatitude; min <- (15 :: Int) ^? _Minutes; sec <- (6 :: Double) ^? _Seconds; (deg, min, sec) ^? _Latitude :: Maybe Latitude)
Just (Radian 1.5577354462258055)
(Profunctor p, Functor f) => AsLatitude p f (DegreesLatitude, Minutes, Seconds)

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

>>> do deg <- (7 :: Int) ^? _DegreesLatitude; min <- (7 :: Int) ^? _Minutes; sec <- (7 :: Double) ^? _Seconds; (deg, min, sec) ^? _Latitude :: Maybe Latitude
Just (Latitude (DegreesLatitude 7) (Minutes 7) (Seconds 7.0000))
>>> do deg <- (89 :: Int) ^? _DegreesLatitude; min <- (59 :: Int) ^? _Minutes; sec <- (59 :: Double) ^? _Seconds; (deg, min, sec) ^? _Latitude :: Maybe Latitude
Just (Latitude (DegreesLatitude 89) (Minutes 59) (Seconds 59.0000))
>>> do deg <- (-7 :: Int) ^? _DegreesLatitude; min <- (7 :: Int) ^? _Minutes; sec <- (7 :: Double) ^? _Seconds; (deg, min, sec) ^? _Latitude :: Maybe Latitude
Just (Latitude (DegreesLatitude (-7)) (Minutes 7) (Seconds 7.0000))
>>> do deg <- (-89 :: Int) ^? _DegreesLatitude; min <- (59 :: Int) ^? _Minutes; sec <- (59 :: Double) ^? _Seconds; (deg, min, sec) ^? _Latitude :: Maybe Latitude
Just (Latitude (DegreesLatitude (-89)) (Minutes 59) (Seconds 59.0000))
>>> do deg <- (90 :: Int) ^? _DegreesLatitude; min <- (59 :: Int) ^? _Minutes; sec <- (59 :: Double) ^? _Seconds; (deg, min, sec) ^? _Latitude :: Maybe Latitude
Nothing
>>> do deg <- (89 :: Int) ^? _DegreesLatitude; min <- (60 :: Int) ^? _Minutes; sec <- (59 :: Double) ^? _Seconds; (deg, min, sec) ^? _Latitude :: Maybe Latitude
Nothing
>>> do deg <- (89 :: Int) ^? _DegreesLatitude; min <- (59 :: Int) ^? _Minutes; sec <- (60 :: Double) ^? _Seconds; (deg, min, sec) ^? _Latitude :: Maybe Latitude
Nothing
>>> fmap (\x -> _Latitude # x :: (DegreesLatitude, Minutes, Seconds))  ((7 :: Double) ^? _Latitude :: Maybe Latitude)
Just (DegreesLatitude 7,Minutes 0,Seconds 0.0000)
>>> fmap (\x -> _Latitude # x :: (DegreesLatitude, Minutes, Seconds))  ((7.12 :: Double) ^? _Latitude :: Maybe Latitude)
Just (DegreesLatitude 7,Minutes 7,Seconds 12.0000)