-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A representation of latitude and longitude -- @package coordinate @version 0.0.10 module Data.Geo.Coordinate.Seconds data Seconds class HasSeconds t seconds :: HasSeconds t => Lens' t Seconds -- | Construct seconds such that if the given value is out of bounds, a -- modulus is taken to keep it within 0 inclusive and 60 exclusive. -- --
-- >>> modSeconds 7 -- Seconds 7.0000 ---- --
-- >>> modSeconds 0 -- Seconds 0.0000 ---- --
-- >>> modSeconds (-0.0001) -- Seconds 59.9999 ---- --
-- >>> modSeconds 60 -- Seconds 0.0000 ---- --
-- >>> modSeconds 59.99999 -- Seconds 60.0000 ---- --
-- >>> modSeconds 59.999 -- Seconds 59.9990 --modSeconds :: Double -> Seconds -- | A prism on seconds to a double between 0 inclusive and 60 exclusive. -- --
-- >>> 7 ^? nSeconds -- Just (Seconds 7.0000) ---- --
-- >>> 0 ^? nSeconds -- Just (Seconds 0.0000) ---- --
-- >>> 59 ^? nSeconds -- Just (Seconds 59.0000) ---- --
-- >>> 59.99 ^? nSeconds -- Just (Seconds 59.9900) ---- --
-- >>> 60 ^? nSeconds -- Nothing ---- --
-- all (\m -> nSeconds # m == n) (n ^? nSeconds) --nSeconds :: Prism' Double Seconds instance Eq Seconds instance Ord Seconds instance HasSeconds Seconds instance Show Seconds module Data.Geo.Coordinate.Minutes data Minutes class HasMinutes t minutes :: HasMinutes t => Lens' t Minutes -- | A prism on minutes to an integer between 0 and 59 inclusive. -- --
-- >>> 7 ^? nMinutes -- Just (Minutes 7) ---- --
-- >>> 0 ^? nMinutes -- Just (Minutes 0) ---- --
-- >>> 59 ^? nMinutes -- Just (Minutes 59) ---- --
-- >>> 60 ^? nMinutes -- Nothing ---- --
-- all (\m -> nMinutes # m == n) (n ^? nMinutes) --nMinutes :: Prism' Int Minutes -- | Construct minutes such that if the given value is out of bounds, a -- modulus is taken to keep it within 0 inclusive and 59 inclusive. -- --
-- >>> modMinutes 7 -- Minutes 7 ---- --
-- >>> modMinutes 0 -- Minutes 0 ---- --
-- >>> modMinutes 60 -- Minutes 0 ---- --
-- >>> modMinutes 61 -- Minutes 1 ---- --
-- >>> modMinutes 59 -- Minutes 59 --modMinutes :: Int -> Minutes instance Eq Minutes instance Ord Minutes instance Show Minutes instance HasMinutes Minutes module Data.Geo.Coordinate.DegreesLongitude data DegreesLongitude class HasDegreesLongitude t degreesLongitude :: HasDegreesLongitude t => Lens' t DegreesLongitude -- | A prism on degrees longitude to an integer between -180 and 180 -- exclusive. -- --
-- >>> 7 ^? nDegreesLongitude -- Just (DegreesLongitude 7) ---- --
-- >>> 0 ^? nDegreesLongitude -- Just (DegreesLongitude 0) ---- --
-- >>> 179 ^? nDegreesLongitude -- Just (DegreesLongitude 179) ---- --
-- >>> 180 ^? nDegreesLongitude -- Nothing ---- --
-- >>> (-179) ^? nDegreesLongitude -- Just (DegreesLongitude (-179)) ---- --
-- >>> (-180) ^? nDegreesLongitude -- Nothing ---- --
-- all (\m -> nDegreesLongitude # m == n) (n ^? nDegreesLongitude) --nDegreesLongitude :: Prism' Int DegreesLongitude instance Eq DegreesLongitude instance Ord DegreesLongitude instance Show DegreesLongitude instance HasDegreesLongitude DegreesLongitude module Data.Geo.Coordinate.Longitude data Longitude class HasLongitude t longitude :: HasLongitude t => Lens' t Longitude -- | An isomorphism on the triple of degrees longitude, minutes, seconds to -- a longitude. -- --
-- >>> do deg <- 7 ^? nDegreesLongitude; min <- 7 ^? nMinutes; sec <- 7 ^? nSeconds; (deg, min, sec) ^? dmsLongitude -- Just (Longitude (DegreesLongitude 7) (Minutes 7) (Seconds 7.0000)) ---- --
-- >>> do deg <- 179 ^? nDegreesLongitude; min <- 59 ^? nMinutes; sec <- 59 ^? nSeconds; (deg, min, sec) ^? dmsLongitude -- Just (Longitude (DegreesLongitude 179) (Minutes 59) (Seconds 59.0000)) ---- --
-- >>> do deg <- (-7) ^? nDegreesLongitude; min <- 7 ^? nMinutes; sec <- 7 ^? nSeconds; (deg, min, sec) ^? dmsLongitude -- Just (Longitude (DegreesLongitude (-7)) (Minutes 7) (Seconds 7.0000)) ---- --
-- >>> do deg <- (-179) ^? nDegreesLongitude; min <- 59 ^? nMinutes; sec <- 59 ^? nSeconds; (deg, min, sec) ^? dmsLongitude -- Just (Longitude (DegreesLongitude (-179)) (Minutes 59) (Seconds 59.0000)) ---- --
-- >>> do deg <- 180 ^? nDegreesLongitude; min <- 59 ^? nMinutes; sec <- 59 ^? nSeconds; (deg, min, sec) ^? dmsLongitude -- Nothing ---- --
-- >>> do deg <- 179 ^? nDegreesLongitude; min <- 60 ^? nMinutes; sec <- 59 ^? nSeconds; (deg, min, sec) ^? dmsLongitude -- Nothing ---- --
-- >>> do deg <- 179 ^? nDegreesLongitude; min <- 59 ^? nMinutes; sec <- 60 ^? nSeconds; (deg, min, sec) ^? dmsLongitude -- Nothing ---- --
-- >>> fmap (dmsLongitude #) (7 ^? fracLongitude) -- Just (DegreesLongitude 7,Minutes 0,Seconds 0.0000) ---- --
-- >>> fmap (dmsLongitude #) (7.12 ^? fracLongitude) -- Just (DegreesLongitude 7,Minutes 7,Seconds 12.0000) --dmsLongitude :: Iso' (DegreesLongitude, Minutes, Seconds) Longitude -- | A prism on longitude to a double between -180 and 180 exclusive. -- --
-- >>> 7 ^? fracLongitude -- Just (Longitude (DegreesLongitude 7) (Minutes 0) (Seconds 0.0000)) ---- --
-- >>> (-7) ^? fracLongitude -- Just (Longitude (DegreesLongitude (-7)) (Minutes 0) (Seconds 0.0000)) ---- --
-- >>> 7.12 ^? fracLongitude -- Just (Longitude (DegreesLongitude 7) (Minutes 7) (Seconds 12.0000)) ---- --
-- >>> (-7.12) ^? fracLongitude -- Just (Longitude (DegreesLongitude (-7)) (Minutes 7) (Seconds 12.0000)) ---- --
-- >>> fmap (fracLongitude #) (7.12 ^? fracLongitude) -- Just 7.12 ---- --
-- >>> fmap (fracLongitude #) ((-7.12) ^? fracLongitude) -- Just (-7.12) ---- --
-- >>> 180 ^? fracLongitude -- Nothing ---- --
-- >>> (-180) ^? fracLongitude -- Nothing ---- --
-- >>> 15.63791 ^? fracLongitude -- Just (Longitude (DegreesLongitude 15) (Minutes 38) (Seconds 16.4760)) ---- --
-- >>> 179.1 ^? fracLongitude -- Just (Longitude (DegreesLongitude 179) (Minutes 5) (Seconds 60.0000)) ---- --
-- >>> 179.2 ^? fracLongitude -- Just (Longitude (DegreesLongitude 179) (Minutes 11) (Seconds 60.0000)) ---- --
-- >>> fmap (fracLongitude #) (do deg <- 7 ^? nDegreesLongitude; min <- 7 ^? nMinutes; sec <- 7 ^? nSeconds; (deg, min, sec) ^? dmsLongitude) -- Just 7.118611111111111 ---- --
-- >>> fmap (fracLongitude #) (do deg <- 179 ^? nDegreesLongitude; min <- 15 ^? nMinutes; sec <- 6 ^? nSeconds; (deg, min, sec) ^? dmsLongitude) -- Just 179.25166666666667 --fracLongitude :: Prism' Double Longitude -- | A prism on longitude to a double between -π and π exclusive. -- --
-- >>> 0.2 ^? radianLongitude -- Just (Longitude (DegreesLongitude 11) (Minutes 27) (Seconds 32.9612)) ---- --
-- >>> 1.3 ^? radianLongitude -- Just (Longitude (DegreesLongitude 74) (Minutes 29) (Seconds 4.2481)) ---- --
-- >>> (-1.3) ^? radianLongitude -- Just (Longitude (DegreesLongitude (-74)) (Minutes 29) (Seconds 4.2481)) ---- --
-- >>> 3.14159 ^? radianLongitude -- Just (Longitude (DegreesLongitude 179) (Minutes 59) (Seconds 59.4527)) ---- --
-- >>> 3.15 ^? radianLongitude -- Nothing ---- --
-- >>> (-3.15) ^? radianLongitude -- Nothing ---- --
-- >>> fmap (radianLongitude #) (do deg <- 7 ^? nDegreesLongitude; min <- 7 ^? nMinutes; sec <- 7 ^? nSeconds; (deg, min, sec) ^? dmsLongitude) -- Just 0.12424320205794079 ---- --
-- >>> fmap (radianLongitude #) (do deg <- 179 ^? nDegreesLongitude; min <- 15 ^? nMinutes; sec <- 6 ^? nSeconds; (deg, min, sec) ^? dmsLongitude) -- Just 3.1285317730207023 --radianLongitude :: Prism' Double Longitude instance Eq Longitude instance Ord Longitude instance Show Longitude instance HasSeconds Longitude instance HasMinutes Longitude instance HasDegreesLongitude Longitude instance HasLongitude Longitude module Data.Geo.Coordinate.DegreesLatitude data DegreesLatitude class HasDegreesLatitude t degreesLatitude :: HasDegreesLatitude t => Lens' t DegreesLatitude -- | A prism on degrees latitude to an integer between -90 and 90 -- exclusive. -- --
-- >>> 7 ^? nDegreesLatitude -- Just (DegreesLatitude 7) ---- --
-- >>> 0 ^? nDegreesLatitude -- Just (DegreesLatitude 0) ---- --
-- >>> 89 ^? nDegreesLatitude -- Just (DegreesLatitude 89) ---- --
-- >>> 90 ^? nDegreesLatitude -- Nothing ---- --
-- >>> (-89) ^? nDegreesLatitude -- Just (DegreesLatitude (-89)) ---- --
-- >>> (-90) ^? nDegreesLatitude -- Nothing ---- --
-- all (\m -> nDegreesLatitude # m == n) (n ^? nDegreesLatitude) --nDegreesLatitude :: Prism' Int DegreesLatitude instance Eq DegreesLatitude instance Ord DegreesLatitude instance Show DegreesLatitude instance HasDegreesLatitude DegreesLatitude module Data.Geo.Coordinate.Latitude data Latitude class HasLatitude t latitude :: HasLatitude t => Lens' t Latitude -- | An isomorphism on the triple of degrees latitude, minutes, seconds to -- a latitude. -- --
-- >>> do deg <- 7 ^? nDegreesLatitude; min <- 7 ^? nMinutes; sec <- 7 ^? nSeconds; (deg, min, sec) ^? dmsLatitude -- Just (Latitude (DegreesLatitude 7) (Minutes 7) (Seconds 7.0000)) ---- --
-- >>> do deg <- 89 ^? nDegreesLatitude; min <- 59 ^? nMinutes; sec <- 59 ^? nSeconds; (deg, min, sec) ^? dmsLatitude -- Just (Latitude (DegreesLatitude 89) (Minutes 59) (Seconds 59.0000)) ---- --
-- >>> do deg <- (-7) ^? nDegreesLatitude; min <- 7 ^? nMinutes; sec <- 7 ^? nSeconds; (deg, min, sec) ^? dmsLatitude -- Just (Latitude (DegreesLatitude (-7)) (Minutes 7) (Seconds 7.0000)) ---- --
-- >>> do deg <- (-89) ^? nDegreesLatitude; min <- 59 ^? nMinutes; sec <- 59 ^? nSeconds; (deg, min, sec) ^? dmsLatitude -- Just (Latitude (DegreesLatitude (-89)) (Minutes 59) (Seconds 59.0000)) ---- --
-- >>> do deg <- 90 ^? nDegreesLatitude; min <- 59 ^? nMinutes; sec <- 59 ^? nSeconds; (deg, min, sec) ^? dmsLatitude -- Nothing ---- --
-- >>> do deg <- 89 ^? nDegreesLatitude; min <- 60 ^? nMinutes; sec <- 59 ^? nSeconds; (deg, min, sec) ^? dmsLatitude -- Nothing ---- --
-- >>> do deg <- 89 ^? nDegreesLatitude; min <- 59 ^? nMinutes; sec <- 60 ^? nSeconds; (deg, min, sec) ^? dmsLatitude -- Nothing ---- --
-- >>> fmap (dmsLatitude #) (7 ^? fracLatitude) -- Just (DegreesLatitude 7,Minutes 0,Seconds 0.0000) ---- --
-- >>> fmap (dmsLatitude #) (7.12 ^? fracLatitude) -- Just (DegreesLatitude 7,Minutes 7,Seconds 12.0000) --dmsLatitude :: Iso' (DegreesLatitude, Minutes, Seconds) Latitude -- | A prism on latitude to a double between -90 and 90 exclusive. -- --
-- >>> 7 ^? fracLatitude -- Just (Latitude (DegreesLatitude 7) (Minutes 0) (Seconds 0.0000)) ---- --
-- >>> (-7) ^? fracLatitude -- Just (Latitude (DegreesLatitude (-7)) (Minutes 0) (Seconds 0.0000)) ---- --
-- >>> 7.12 ^? fracLatitude -- Just (Latitude (DegreesLatitude 7) (Minutes 7) (Seconds 12.0000)) ---- --
-- >>> (-7.12) ^? fracLatitude -- Just (Latitude (DegreesLatitude (-7)) (Minutes 7) (Seconds 12.0000)) ---- --
-- >>> fmap (fracLatitude #) (7.12 ^? fracLatitude) -- Just 7.12 ---- --
-- >>> fmap (fracLatitude #) ((-7.12) ^? fracLatitude) -- Just (-7.12) ---- --
-- >>> 90 ^? fracLatitude -- Nothing ---- --
-- >>> (-90) ^? fracLatitude -- Nothing ---- --
-- >>> 15.63791 ^? fracLatitude -- Just (Latitude (DegreesLatitude 15) (Minutes 38) (Seconds 16.4760)) ---- --
-- >>> 89.1 ^? fracLatitude -- Just (Latitude (DegreesLatitude 89) (Minutes 5) (Seconds 60.0000)) ---- --
-- >>> 89.2 ^? fracLatitude -- Just (Latitude (DegreesLatitude 89) (Minutes 12) (Seconds 0.0000)) ---- --
-- >>> fmap (fracLatitude #) (do deg <- 7 ^? nDegreesLatitude; min <- 7 ^? nMinutes; sec <- 7 ^? nSeconds; (deg, min, sec) ^? dmsLatitude) -- Just 7.118611111111111 ---- --
-- >>> fmap (fracLatitude #) (do deg <- 89 ^? nDegreesLatitude; min <- 15 ^? nMinutes; sec <- 6 ^? nSeconds; (deg, min, sec) ^? dmsLatitude) -- Just 89.25166666666667 --fracLatitude :: Prism' Double Latitude -- | A prism on latitude to a double between -π2 and π2 exclusive. -- --
-- >>> 0.2 ^? radianLatitude -- Just (Latitude (DegreesLatitude 11) (Minutes 27) (Seconds 32.9612)) ---- --
-- >>> 1.3 ^? radianLatitude -- Just (Latitude (DegreesLatitude 74) (Minutes 29) (Seconds 4.2481)) ---- --
-- >>> (-1.3) ^? radianLatitude -- Just (Latitude (DegreesLatitude (-74)) (Minutes 29) (Seconds 4.2481)) ---- --
-- >>> 1.5707963 ^? radianLatitude -- Just (Latitude (DegreesLatitude 89) (Minutes 59) (Seconds 59.9945)) ---- --
-- >>> 1.58 ^? radianLatitude -- Nothing ---- --
-- >>> (-1.58) ^? radianLatitude -- Nothing ---- --
-- >>> fmap (radianLatitude #) (do deg <- 7 ^? nDegreesLatitude; min <- 7 ^? nMinutes; sec <- 7 ^? nSeconds; (deg, min, sec) ^? dmsLatitude) -- Just 0.12424320205794079 ---- --
-- >>> fmap (radianLatitude #) (do deg <- 89 ^? nDegreesLatitude; min <- 15 ^? nMinutes; sec <- 6 ^? nSeconds; (deg, min, sec) ^? dmsLatitude) -- Just 1.5577354462258057 --radianLatitude :: Prism' Double Latitude instance Eq Latitude instance Ord Latitude instance Show Latitude instance HasSeconds Latitude instance HasMinutes Latitude instance HasDegreesLatitude Latitude instance HasLatitude Latitude module Data.Geo.Coordinate.Coordinate data Coordinate -- | Build a coordinate from a latitude and longitude. (.#.) :: Latitude -> Longitude -> Coordinate -- | Build a coordinate from a fractional latitude and fractional -- longitude. Fails if either are out of range. (<°>) :: Double -> Double -> Maybe Coordinate -- | Build a coordinate from a radian latitude and fractional longitude. -- Fails if either are out of range. (<㎭>) :: Double -> Double -> Maybe Coordinate -- | A prism on the pair (below) to a coordinate: -- --