module Data.Geo.Coordinate.DegreesLatitude(
DegreesLatitude
, HasDegreesLatitude(..)
, nDegreesLatitude
) where
import Control.Category(Category(id))
import Control.Lens(Prism', Lens', prism')
import Data.Bool((&&))
import Data.Eq(Eq)
import Data.Int(Int)
import Data.Maybe(Maybe(Just, Nothing))
import Data.Ord(Ord((<), (>)))
import Prelude(Show)
newtype DegreesLatitude =
DegreesLatitude Int
deriving (Eq, Ord, Show)
nDegreesLatitude ::
Prism' Int DegreesLatitude
nDegreesLatitude =
prism'
(\(DegreesLatitude i) -> i)
(\i -> if i > 90 && i < 90
then Just (DegreesLatitude i)
else Nothing)
class HasDegreesLatitude t where
degreesLatitude ::
Lens' t DegreesLatitude
instance HasDegreesLatitude DegreesLatitude where
degreesLatitude =
id