hgeometry-0.12.0.0: src/Data/Geometry/Interval/Util.hs
{-# LANGUAGE TemplateHaskell #-}
--------------------------------------------------------------------------------
-- |
-- Module : Data.Geometry.Interval.Util
-- Copyright : (C) Frank Staals
-- License : see the LICENSE file
-- Maintainer : Frank Staals
--
--------------------------------------------------------------------------------
module Data.Geometry.Interval.Util where
import Control.DeepSeq
import Control.Lens
import Data.Range
import GHC.Generics (Generic)
-- | Open on left endpoint; so Closed before open
newtype L r = L { _unL :: EndPoint r } deriving (Show,Eq,Generic,NFData)
makeLenses ''L
instance Ord r => Ord (L r) where
a `compare` b = f ( _unL a) `compare` f (_unL b)
where
f (Open x) = (x,True)
f (Closed x) = (x,False)
-- | Order on right endpoint; so Open before Closed
newtype R r = R { _unR :: EndPoint r } deriving (Show,Eq,Ord,Generic,NFData)
makeLenses ''R