-- 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: -- -- fracCoordinate :: Prism' (Double, Double) Coordinate -- | A prism on the pair (below) to a coordinate: -- -- radianCoordinate :: Prism' (Double, Double) Coordinate class HasCoordinate t coordinate :: HasCoordinate t => Lens' t Coordinate coordinateLatLon :: Iso' (Latitude, Longitude) Coordinate coordinateLonLat :: Iso' (Longitude, Latitude) Coordinate coordinateDMSLatLon :: Iso' ((DegreesLatitude, Minutes, Seconds), Longitude) Coordinate coordinateLatDMSLon :: Iso' (Latitude, (DegreesLongitude, Minutes, Seconds)) Coordinate coordinateDMSLatDMSLon :: Iso' ((DegreesLatitude, Minutes, Seconds), (DegreesLongitude, Minutes, Seconds)) Coordinate instance Eq Coordinate instance Ord Coordinate instance Show Coordinate instance HasDegreesLongitude Coordinate instance HasDegreesLatitude Coordinate instance HasLongitude Coordinate instance HasLatitude Coordinate instance HasCoordinate Coordinate module Data.Geo.Coordinate