coordinate 0.0.19 → 0.0.20
raw patch · 4 files changed
+59/−25 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.Geo.Coordinate.Coordinate: instance (Choice p, Applicative f) => AsCoordinate p f ((DegreesLatitude, Minutes, Seconds), Double)
- Data.Geo.Coordinate.Coordinate: instance (Choice p, Applicative f) => AsCoordinate p f (Double, (DegreesLongitude, Minutes, Seconds))
- Data.Geo.Coordinate.Coordinate: instance (Choice p, Applicative f) => AsCoordinate p f (Double, Double)
- Data.Geo.Coordinate.Coordinate: instance (Choice p, Applicative f) => AsCoordinate p f (Double, Longitude)
- Data.Geo.Coordinate.Coordinate: instance (Choice p, Applicative f) => AsCoordinate p f (Latitude, Double)
- Data.Geo.Coordinate.Coordinate: instance (Profunctor p, Functor f) => AsCoordinate p f ((DegreesLatitude, Minutes, Seconds), (DegreesLongitude, Minutes, Seconds))
- Data.Geo.Coordinate.Coordinate: instance (Profunctor p, Functor f) => AsCoordinate p f ((DegreesLatitude, Minutes, Seconds), Longitude)
- Data.Geo.Coordinate.Coordinate: instance (Profunctor p, Functor f) => AsCoordinate p f ((DegreesLongitude, Minutes, Seconds), (DegreesLatitude, Minutes, Seconds))
- Data.Geo.Coordinate.Coordinate: instance (Profunctor p, Functor f) => AsCoordinate p f ((DegreesLongitude, Minutes, Seconds), Latitude)
- Data.Geo.Coordinate.Coordinate: instance (Profunctor p, Functor f) => AsCoordinate p f (Latitude, (DegreesLongitude, Minutes, Seconds))
- Data.Geo.Coordinate.Coordinate: instance (Profunctor p, Functor f) => AsCoordinate p f (Latitude, Longitude)
- Data.Geo.Coordinate.Coordinate: instance (Profunctor p, Functor f) => AsCoordinate p f (Longitude, (DegreesLatitude, Minutes, Seconds))
- Data.Geo.Coordinate.Coordinate: instance (Profunctor p, Functor f) => AsCoordinate p f (Longitude, Latitude)
- Data.Geo.Coordinate.Coordinate: instance (p ~ (->), Applicative f) => AsMinutes p f Coordinate
- Data.Geo.Coordinate.Coordinate: instance (p ~ (->), Applicative f) => AsSeconds p f Coordinate
- Data.Geo.Coordinate.Coordinate: instance (p ~ (->), Functor f) => AsDegreesLatitude p f Coordinate
- Data.Geo.Coordinate.Coordinate: instance (p ~ (->), Functor f) => AsDegreesLongitude p f Coordinate
- Data.Geo.Coordinate.Coordinate: instance (p ~ (->), Functor f) => AsLatitude p f Coordinate
- Data.Geo.Coordinate.Coordinate: instance (p ~ (->), Functor f) => AsLongitude p f Coordinate
- Data.Geo.Coordinate.Coordinate: instance AsCoordinate p f Coordinate
- Data.Geo.Coordinate.Coordinate: instance Eq Coordinate
- Data.Geo.Coordinate.Coordinate: instance Ord Coordinate
- Data.Geo.Coordinate.Coordinate: instance Show Coordinate
- Data.Geo.Coordinate.DegreesLatitude: instance (Choice p, Applicative f) => AsDegreesLatitude p f Int
- Data.Geo.Coordinate.DegreesLatitude: instance AsDegreesLatitude p f DegreesLatitude
- Data.Geo.Coordinate.DegreesLatitude: instance Eq DegreesLatitude
- Data.Geo.Coordinate.DegreesLatitude: instance Ord DegreesLatitude
- Data.Geo.Coordinate.DegreesLatitude: instance Show DegreesLatitude
- Data.Geo.Coordinate.DegreesLatitude: remDegreesLatitude :: Int -> DegreesLatitude
- Data.Geo.Coordinate.DegreesLongitude: instance (Choice p, Applicative f) => AsDegreesLongitude p f Int
- Data.Geo.Coordinate.DegreesLongitude: instance AsDegreesLongitude p f DegreesLongitude
- Data.Geo.Coordinate.DegreesLongitude: instance Eq DegreesLongitude
- Data.Geo.Coordinate.DegreesLongitude: instance Ord DegreesLongitude
- Data.Geo.Coordinate.DegreesLongitude: instance Show DegreesLongitude
- Data.Geo.Coordinate.DegreesLongitude: remDegreesLongitude :: Int -> DegreesLongitude
- Data.Geo.Coordinate.Latitude: instance (Choice p, Applicative f) => AsLatitude p f Double
- Data.Geo.Coordinate.Latitude: instance (Profunctor p, Functor f) => AsLatitude p f (DegreesLatitude, Minutes, Seconds)
- Data.Geo.Coordinate.Latitude: instance (p ~ (->), Functor f) => AsDegreesLatitude p f Latitude
- Data.Geo.Coordinate.Latitude: instance (p ~ (->), Functor f) => AsMinutes p f Latitude
- Data.Geo.Coordinate.Latitude: instance (p ~ (->), Functor f) => AsSeconds p f Latitude
- Data.Geo.Coordinate.Latitude: instance AsLatitude p f Latitude
- Data.Geo.Coordinate.Latitude: instance Eq Latitude
- Data.Geo.Coordinate.Latitude: instance Ord Latitude
- Data.Geo.Coordinate.Latitude: instance Show Latitude
- Data.Geo.Coordinate.Longitude: instance (Choice p, Applicative f) => AsLongitude p f Double
- Data.Geo.Coordinate.Longitude: instance (Profunctor p, Functor f) => AsLongitude p f (DegreesLongitude, Minutes, Seconds)
- Data.Geo.Coordinate.Longitude: instance (p ~ (->), Functor f) => AsDegreesLongitude p f Longitude
- Data.Geo.Coordinate.Longitude: instance (p ~ (->), Functor f) => AsMinutes p f Longitude
- Data.Geo.Coordinate.Longitude: instance (p ~ (->), Functor f) => AsSeconds p f Longitude
- Data.Geo.Coordinate.Longitude: instance AsLongitude p f Longitude
- Data.Geo.Coordinate.Longitude: instance Eq Longitude
- Data.Geo.Coordinate.Longitude: instance Ord Longitude
- Data.Geo.Coordinate.Longitude: instance Show Longitude
- Data.Geo.Coordinate.Minutes: instance (Choice p, Applicative f) => AsMinutes p f Int
- Data.Geo.Coordinate.Minutes: instance AsMinutes p f Minutes
- Data.Geo.Coordinate.Minutes: instance Eq Minutes
- Data.Geo.Coordinate.Minutes: instance Ord Minutes
- Data.Geo.Coordinate.Minutes: instance Show Minutes
- Data.Geo.Coordinate.Seconds: instance (Choice p, Applicative f) => AsSeconds p f Double
- Data.Geo.Coordinate.Seconds: instance AsSeconds p f Seconds
- Data.Geo.Coordinate.Seconds: instance Eq Seconds
- Data.Geo.Coordinate.Seconds: instance Ord Seconds
- Data.Geo.Coordinate.Seconds: instance Show Seconds
+ Data.Geo.Coordinate.Coordinate: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Geo.Coordinate.Coordinate.AsCoordinate p f ((Data.Geo.Coordinate.DegreesLatitude.DegreesLatitude, Data.Geo.Coordinate.Minutes.Minutes, Data.Geo.Coordinate.Seconds.Seconds), GHC.Types.Double)
+ Data.Geo.Coordinate.Coordinate: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Geo.Coordinate.Coordinate.AsCoordinate p f (Data.Geo.Coordinate.Latitude.Latitude, GHC.Types.Double)
+ Data.Geo.Coordinate.Coordinate: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Geo.Coordinate.Coordinate.AsCoordinate p f (GHC.Types.Double, (Data.Geo.Coordinate.DegreesLongitude.DegreesLongitude, Data.Geo.Coordinate.Minutes.Minutes, Data.Geo.Coordinate.Seconds.Seconds))
+ Data.Geo.Coordinate.Coordinate: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Geo.Coordinate.Coordinate.AsCoordinate p f (GHC.Types.Double, Data.Geo.Coordinate.Longitude.Longitude)
+ Data.Geo.Coordinate.Coordinate: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Geo.Coordinate.Coordinate.AsCoordinate p f (GHC.Types.Double, GHC.Types.Double)
+ Data.Geo.Coordinate.Coordinate: instance (Data.Profunctor.Unsafe.Profunctor p, GHC.Base.Functor f) => Data.Geo.Coordinate.Coordinate.AsCoordinate p f ((Data.Geo.Coordinate.DegreesLatitude.DegreesLatitude, Data.Geo.Coordinate.Minutes.Minutes, Data.Geo.Coordinate.Seconds.Seconds), (Data.Geo.Coordinate.DegreesLongitude.DegreesLongitude, Data.Geo.Coordinate.Minutes.Minutes, Data.Geo.Coordinate.Seconds.Seconds))
+ Data.Geo.Coordinate.Coordinate: instance (Data.Profunctor.Unsafe.Profunctor p, GHC.Base.Functor f) => Data.Geo.Coordinate.Coordinate.AsCoordinate p f ((Data.Geo.Coordinate.DegreesLatitude.DegreesLatitude, Data.Geo.Coordinate.Minutes.Minutes, Data.Geo.Coordinate.Seconds.Seconds), Data.Geo.Coordinate.Longitude.Longitude)
+ Data.Geo.Coordinate.Coordinate: instance (Data.Profunctor.Unsafe.Profunctor p, GHC.Base.Functor f) => Data.Geo.Coordinate.Coordinate.AsCoordinate p f ((Data.Geo.Coordinate.DegreesLongitude.DegreesLongitude, Data.Geo.Coordinate.Minutes.Minutes, Data.Geo.Coordinate.Seconds.Seconds), (Data.Geo.Coordinate.DegreesLatitude.DegreesLatitude, Data.Geo.Coordinate.Minutes.Minutes, Data.Geo.Coordinate.Seconds.Seconds))
+ Data.Geo.Coordinate.Coordinate: instance (Data.Profunctor.Unsafe.Profunctor p, GHC.Base.Functor f) => Data.Geo.Coordinate.Coordinate.AsCoordinate p f ((Data.Geo.Coordinate.DegreesLongitude.DegreesLongitude, Data.Geo.Coordinate.Minutes.Minutes, Data.Geo.Coordinate.Seconds.Seconds), Data.Geo.Coordinate.Latitude.Latitude)
+ Data.Geo.Coordinate.Coordinate: instance (Data.Profunctor.Unsafe.Profunctor p, GHC.Base.Functor f) => Data.Geo.Coordinate.Coordinate.AsCoordinate p f (Data.Geo.Coordinate.Latitude.Latitude, (Data.Geo.Coordinate.DegreesLongitude.DegreesLongitude, Data.Geo.Coordinate.Minutes.Minutes, Data.Geo.Coordinate.Seconds.Seconds))
+ Data.Geo.Coordinate.Coordinate: instance (Data.Profunctor.Unsafe.Profunctor p, GHC.Base.Functor f) => Data.Geo.Coordinate.Coordinate.AsCoordinate p f (Data.Geo.Coordinate.Latitude.Latitude, Data.Geo.Coordinate.Longitude.Longitude)
+ Data.Geo.Coordinate.Coordinate: instance (Data.Profunctor.Unsafe.Profunctor p, GHC.Base.Functor f) => Data.Geo.Coordinate.Coordinate.AsCoordinate p f (Data.Geo.Coordinate.Longitude.Longitude, (Data.Geo.Coordinate.DegreesLatitude.DegreesLatitude, Data.Geo.Coordinate.Minutes.Minutes, Data.Geo.Coordinate.Seconds.Seconds))
+ Data.Geo.Coordinate.Coordinate: instance (Data.Profunctor.Unsafe.Profunctor p, GHC.Base.Functor f) => Data.Geo.Coordinate.Coordinate.AsCoordinate p f (Data.Geo.Coordinate.Longitude.Longitude, Data.Geo.Coordinate.Latitude.Latitude)
+ Data.Geo.Coordinate.Coordinate: instance (p ~ (->), GHC.Base.Applicative f) => Data.Geo.Coordinate.Minutes.AsMinutes p f Data.Geo.Coordinate.Coordinate.Coordinate
+ Data.Geo.Coordinate.Coordinate: instance (p ~ (->), GHC.Base.Applicative f) => Data.Geo.Coordinate.Seconds.AsSeconds p f Data.Geo.Coordinate.Coordinate.Coordinate
+ Data.Geo.Coordinate.Coordinate: instance (p ~ (->), GHC.Base.Functor f) => Data.Geo.Coordinate.DegreesLatitude.AsDegreesLatitude p f Data.Geo.Coordinate.Coordinate.Coordinate
+ Data.Geo.Coordinate.Coordinate: instance (p ~ (->), GHC.Base.Functor f) => Data.Geo.Coordinate.DegreesLongitude.AsDegreesLongitude p f Data.Geo.Coordinate.Coordinate.Coordinate
+ Data.Geo.Coordinate.Coordinate: instance (p ~ (->), GHC.Base.Functor f) => Data.Geo.Coordinate.Latitude.AsLatitude p f Data.Geo.Coordinate.Coordinate.Coordinate
+ Data.Geo.Coordinate.Coordinate: instance (p ~ (->), GHC.Base.Functor f) => Data.Geo.Coordinate.Longitude.AsLongitude p f Data.Geo.Coordinate.Coordinate.Coordinate
+ Data.Geo.Coordinate.Coordinate: instance Data.Geo.Coordinate.Coordinate.AsCoordinate p f Data.Geo.Coordinate.Coordinate.Coordinate
+ Data.Geo.Coordinate.Coordinate: instance GHC.Classes.Eq Data.Geo.Coordinate.Coordinate.Coordinate
+ Data.Geo.Coordinate.Coordinate: instance GHC.Classes.Ord Data.Geo.Coordinate.Coordinate.Coordinate
+ Data.Geo.Coordinate.Coordinate: instance GHC.Show.Show Data.Geo.Coordinate.Coordinate.Coordinate
+ Data.Geo.Coordinate.DegreesLatitude: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Geo.Coordinate.DegreesLatitude.AsDegreesLatitude p f GHC.Types.Int
+ Data.Geo.Coordinate.DegreesLatitude: instance Data.Geo.Coordinate.DegreesLatitude.AsDegreesLatitude p f Data.Geo.Coordinate.DegreesLatitude.DegreesLatitude
+ Data.Geo.Coordinate.DegreesLatitude: instance GHC.Classes.Eq Data.Geo.Coordinate.DegreesLatitude.DegreesLatitude
+ Data.Geo.Coordinate.DegreesLatitude: instance GHC.Classes.Ord Data.Geo.Coordinate.DegreesLatitude.DegreesLatitude
+ Data.Geo.Coordinate.DegreesLatitude: instance GHC.Show.Show Data.Geo.Coordinate.DegreesLatitude.DegreesLatitude
+ Data.Geo.Coordinate.DegreesLatitude: modDegreesLatitude :: Int -> DegreesLatitude
+ Data.Geo.Coordinate.DegreesLongitude: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Geo.Coordinate.DegreesLongitude.AsDegreesLongitude p f GHC.Types.Int
+ Data.Geo.Coordinate.DegreesLongitude: instance Data.Geo.Coordinate.DegreesLongitude.AsDegreesLongitude p f Data.Geo.Coordinate.DegreesLongitude.DegreesLongitude
+ Data.Geo.Coordinate.DegreesLongitude: instance GHC.Classes.Eq Data.Geo.Coordinate.DegreesLongitude.DegreesLongitude
+ Data.Geo.Coordinate.DegreesLongitude: instance GHC.Classes.Ord Data.Geo.Coordinate.DegreesLongitude.DegreesLongitude
+ Data.Geo.Coordinate.DegreesLongitude: instance GHC.Show.Show Data.Geo.Coordinate.DegreesLongitude.DegreesLongitude
+ Data.Geo.Coordinate.DegreesLongitude: modDegreesLongitude :: Int -> DegreesLongitude
+ Data.Geo.Coordinate.Latitude: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Geo.Coordinate.Latitude.AsLatitude p f GHC.Types.Double
+ Data.Geo.Coordinate.Latitude: instance (Data.Profunctor.Unsafe.Profunctor p, GHC.Base.Functor f) => Data.Geo.Coordinate.Latitude.AsLatitude p f (Data.Geo.Coordinate.DegreesLatitude.DegreesLatitude, Data.Geo.Coordinate.Minutes.Minutes, Data.Geo.Coordinate.Seconds.Seconds)
+ Data.Geo.Coordinate.Latitude: instance (p ~ (->), GHC.Base.Functor f) => Data.Geo.Coordinate.DegreesLatitude.AsDegreesLatitude p f Data.Geo.Coordinate.Latitude.Latitude
+ Data.Geo.Coordinate.Latitude: instance (p ~ (->), GHC.Base.Functor f) => Data.Geo.Coordinate.Minutes.AsMinutes p f Data.Geo.Coordinate.Latitude.Latitude
+ Data.Geo.Coordinate.Latitude: instance (p ~ (->), GHC.Base.Functor f) => Data.Geo.Coordinate.Seconds.AsSeconds p f Data.Geo.Coordinate.Latitude.Latitude
+ Data.Geo.Coordinate.Latitude: instance Data.Geo.Coordinate.Latitude.AsLatitude p f Data.Geo.Coordinate.Latitude.Latitude
+ Data.Geo.Coordinate.Latitude: instance GHC.Classes.Eq Data.Geo.Coordinate.Latitude.Latitude
+ Data.Geo.Coordinate.Latitude: instance GHC.Classes.Ord Data.Geo.Coordinate.Latitude.Latitude
+ Data.Geo.Coordinate.Latitude: instance GHC.Show.Show Data.Geo.Coordinate.Latitude.Latitude
+ Data.Geo.Coordinate.Longitude: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Geo.Coordinate.Longitude.AsLongitude p f GHC.Types.Double
+ Data.Geo.Coordinate.Longitude: instance (Data.Profunctor.Unsafe.Profunctor p, GHC.Base.Functor f) => Data.Geo.Coordinate.Longitude.AsLongitude p f (Data.Geo.Coordinate.DegreesLongitude.DegreesLongitude, Data.Geo.Coordinate.Minutes.Minutes, Data.Geo.Coordinate.Seconds.Seconds)
+ Data.Geo.Coordinate.Longitude: instance (p ~ (->), GHC.Base.Functor f) => Data.Geo.Coordinate.DegreesLongitude.AsDegreesLongitude p f Data.Geo.Coordinate.Longitude.Longitude
+ Data.Geo.Coordinate.Longitude: instance (p ~ (->), GHC.Base.Functor f) => Data.Geo.Coordinate.Minutes.AsMinutes p f Data.Geo.Coordinate.Longitude.Longitude
+ Data.Geo.Coordinate.Longitude: instance (p ~ (->), GHC.Base.Functor f) => Data.Geo.Coordinate.Seconds.AsSeconds p f Data.Geo.Coordinate.Longitude.Longitude
+ Data.Geo.Coordinate.Longitude: instance Data.Geo.Coordinate.Longitude.AsLongitude p f Data.Geo.Coordinate.Longitude.Longitude
+ Data.Geo.Coordinate.Longitude: instance GHC.Classes.Eq Data.Geo.Coordinate.Longitude.Longitude
+ Data.Geo.Coordinate.Longitude: instance GHC.Classes.Ord Data.Geo.Coordinate.Longitude.Longitude
+ Data.Geo.Coordinate.Longitude: instance GHC.Show.Show Data.Geo.Coordinate.Longitude.Longitude
+ Data.Geo.Coordinate.Minutes: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Geo.Coordinate.Minutes.AsMinutes p f GHC.Types.Int
+ Data.Geo.Coordinate.Minutes: instance Data.Geo.Coordinate.Minutes.AsMinutes p f Data.Geo.Coordinate.Minutes.Minutes
+ Data.Geo.Coordinate.Minutes: instance GHC.Classes.Eq Data.Geo.Coordinate.Minutes.Minutes
+ Data.Geo.Coordinate.Minutes: instance GHC.Classes.Ord Data.Geo.Coordinate.Minutes.Minutes
+ Data.Geo.Coordinate.Minutes: instance GHC.Show.Show Data.Geo.Coordinate.Minutes.Minutes
+ Data.Geo.Coordinate.Seconds: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Geo.Coordinate.Seconds.AsSeconds p f GHC.Types.Double
+ Data.Geo.Coordinate.Seconds: instance Data.Geo.Coordinate.Seconds.AsSeconds p f Data.Geo.Coordinate.Seconds.Seconds
+ Data.Geo.Coordinate.Seconds: instance GHC.Classes.Eq Data.Geo.Coordinate.Seconds.Seconds
+ Data.Geo.Coordinate.Seconds: instance GHC.Classes.Ord Data.Geo.Coordinate.Seconds.Seconds
+ Data.Geo.Coordinate.Seconds: instance GHC.Show.Show Data.Geo.Coordinate.Seconds.Seconds
Files
- changelog +4/−0
- coordinate.cabal +1/−1
- src/Data/Geo/Coordinate/DegreesLatitude.hs +27/−12
- src/Data/Geo/Coordinate/DegreesLongitude.hs +27/−12
changelog view
@@ -1,3 +1,7 @@+0.0.20++* fix modulo arithmetic for latitude and longitude.+ 0.0.19 * Add lenses from latitude, longitude minutes, seconds.
coordinate.cabal view
@@ -1,5 +1,5 @@ name: coordinate-version: 0.0.19+version: 0.0.20 license: BSD3 license-file: LICENCE author: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>
src/Data/Geo/Coordinate/DegreesLatitude.hs view
@@ -5,18 +5,18 @@ module Data.Geo.Coordinate.DegreesLatitude( DegreesLatitude , AsDegreesLatitude(..)-, remDegreesLatitude+, modDegreesLatitude ) where import Control.Applicative(Applicative) import Control.Category(Category(id)) import Control.Lens(Optic', Choice, prism') import Data.Bool((&&))-import Data.Eq(Eq)+import Data.Eq(Eq((==))) import Data.Int(Int) import Data.Maybe(Maybe(Just, Nothing)) import Data.Ord(Ord((<), (>)))-import Prelude(Show, rem)+import Prelude(Show, mod, Num((+), (-))) -- $setup -- >>> import Control.Lens((#), (^?))@@ -66,22 +66,37 @@ -- | Setting a value @>= 90@ will get that value @(`rem` 90)@. ----- >>> remDegreesLatitude 7+-- >>> modDegreesLatitude 7 -- DegreesLatitude 7 ----- >>> remDegreesLatitude 0+-- >>> modDegreesLatitude 0 -- DegreesLatitude 0 ----- >>> remDegreesLatitude 90--- DegreesLatitude 0+-- >>> modDegreesLatitude 90+-- DegreesLatitude 90 ----- >>> remDegreesLatitude 1+-- >>> modDegreesLatitude (-90)+-- DegreesLatitude (-90)+--+-- >>> modDegreesLatitude 1 -- DegreesLatitude 1 ----- >>> remDegreesLatitude 89+-- >>> modDegreesLatitude 89 -- DegreesLatitude 89 -remDegreesLatitude ::+--+-- >>> modDegreesLatitude 91+-- DegreesLatitude (-89)+--+-- >>> modDegreesLatitude (-91)+-- DegreesLatitude 89+--+-- >>> modDegreesLatitude 300+-- DegreesLatitude (-60)+--+-- >>> modDegreesLatitude (-300)+-- DegreesLatitude 60+modDegreesLatitude :: Int -> DegreesLatitude-remDegreesLatitude x =- DegreesLatitude (x `rem` 90)+modDegreesLatitude x =+ DegreesLatitude (if x == 90 then 90 else mod (x + 90) 180 - 90)
src/Data/Geo/Coordinate/DegreesLongitude.hs view
@@ -5,18 +5,18 @@ module Data.Geo.Coordinate.DegreesLongitude( DegreesLongitude , AsDegreesLongitude(..)-, remDegreesLongitude+, modDegreesLongitude ) where import Control.Applicative(Applicative) import Control.Category(Category(id)) import Control.Lens(Optic', Choice, prism') import Data.Bool((&&))-import Data.Eq(Eq)+import Data.Eq(Eq((==))) import Data.Int(Int) import Data.Maybe(Maybe(Just, Nothing)) import Data.Ord(Ord((<), (>)))-import Prelude(Show, rem)+import Prelude(Show, mod, Num((+), (-))) -- $setup -- >>> import Control.Lens((#), (^?))@@ -66,22 +66,37 @@ -- | Setting a value @>= 180@ will get that value @(`rem` 180)@. ----- >>> remDegreesLongitude 7+-- >>> modDegreesLongitude 7 -- DegreesLongitude 7 ----- >>> remDegreesLongitude 0+-- >>> modDegreesLongitude 0 -- DegreesLongitude 0 ----- >>> remDegreesLongitude 180--- DegreesLongitude 0+-- >>> modDegreesLongitude 180+-- DegreesLongitude 180 ----- >>> remDegreesLongitude 1+-- >>> modDegreesLongitude (-180)+-- DegreesLongitude (-180)+--+-- >>> modDegreesLongitude 1 -- DegreesLongitude 1 ----- >>> remDegreesLongitude 179+-- >>> modDegreesLongitude 179 -- DegreesLongitude 179 -remDegreesLongitude ::+--+-- >>> modDegreesLongitude 181+-- DegreesLongitude (-179)+--+-- >>> modDegreesLongitude (-181)+-- DegreesLongitude 179+--+-- >>> modDegreesLongitude 600+-- DegreesLongitude (-120)+--+-- >>> modDegreesLongitude (-600)+-- DegreesLongitude 120+modDegreesLongitude :: Int -> DegreesLongitude-remDegreesLongitude x =- DegreesLongitude (x `rem` 180)+modDegreesLongitude x =+ DegreesLongitude (if x == 180 then 180 else mod (x + 180) 360 - 180)