| Copyright | (C) Frank Staals |
|---|---|
| License | see the LICENSE file |
| Maintainer | Frank Staals |
| Safe Haskell | None |
| Language | GHC2024 |
HGeometry.Interval
Description
Intervals
Synopsis
- data Interval (endPoint :: k -> Type) (r :: k) where
- pattern Interval :: endPoint r -> endPoint r -> Interval endPoint r
- pattern ClosedInterval :: r -> r -> ClosedInterval r
- pattern OpenInterval :: r -> r -> OpenInterval r
- type ClosedInterval r = Interval (EndPoint 'Closed) r
- type OpenInterval r = Interval (EndPoint 'Open) r
- data HalfOpenInterval r = HalfOpenInterval !(EndPoint 'Open r) !(EndPoint 'Closed r)
- module HGeometry.Interval.Class
- asClosedInterval :: Interval_ interval r => interval -> Maybe (ClosedInterval r)
- asOpenInterval :: Interval_ interval r => interval -> Maybe (OpenInterval r)
- asAnInterval :: Interval_ interval r => interval -> Interval AnEndPoint r
- data Interval_x_IntervalIntersection r interval
- = Interval_x_Interval_Point !r
- | Interval_x_Interval_Contained !interval
- | Interval_x_Interval_Partial !interval
Documentation
data Interval (endPoint :: k -> Type) (r :: k) where Source #
Data type representing intervals
Bundled Patterns
| pattern Interval :: endPoint r -> endPoint r -> Interval endPoint r | Construct an interval |
| pattern ClosedInterval :: r -> r -> ClosedInterval r | Construct a closed interval |
| pattern OpenInterval :: r -> r -> OpenInterval r | Construct an open ended interval |
Instances
type ClosedInterval r = Interval (EndPoint 'Closed) r Source #
Cosed intervals (using a boxed representation)
type OpenInterval r = Interval (EndPoint 'Open) r Source #
Open intervals (using a boxed representation)
data HalfOpenInterval r Source #
An interval that is open on the left and closed on the right
Constructors
| HalfOpenInterval !(EndPoint 'Open r) !(EndPoint 'Closed r) |
Instances
| Functor HalfOpenInterval Source # | |
Defined in HGeometry.Interval.HalfOpen Methods fmap :: (a -> b) -> HalfOpenInterval a -> HalfOpenInterval b Source # (<$) :: a -> HalfOpenInterval b -> HalfOpenInterval a Source # | |
| Foldable HalfOpenInterval Source # | |
Defined in HGeometry.Interval.HalfOpen Methods fold :: Monoid m => HalfOpenInterval m -> m Source # foldMap :: Monoid m => (a -> m) -> HalfOpenInterval a -> m Source # foldMap' :: Monoid m => (a -> m) -> HalfOpenInterval a -> m Source # foldr :: (a -> b -> b) -> b -> HalfOpenInterval a -> b Source # foldr' :: (a -> b -> b) -> b -> HalfOpenInterval a -> b Source # foldl :: (b -> a -> b) -> b -> HalfOpenInterval a -> b Source # foldl' :: (b -> a -> b) -> b -> HalfOpenInterval a -> b Source # foldr1 :: (a -> a -> a) -> HalfOpenInterval a -> a Source # foldl1 :: (a -> a -> a) -> HalfOpenInterval a -> a Source # toList :: HalfOpenInterval a -> [a] Source # null :: HalfOpenInterval a -> Bool Source # length :: HalfOpenInterval a -> Int Source # elem :: Eq a => a -> HalfOpenInterval a -> Bool Source # maximum :: Ord a => HalfOpenInterval a -> a Source # minimum :: Ord a => HalfOpenInterval a -> a Source # sum :: Num a => HalfOpenInterval a -> a Source # product :: Num a => HalfOpenInterval a -> a Source # | |
| Traversable HalfOpenInterval Source # | |
Defined in HGeometry.Interval.HalfOpen Methods traverse :: Applicative f => (a -> f b) -> HalfOpenInterval a -> f (HalfOpenInterval b) Source # sequenceA :: Applicative f => HalfOpenInterval (f a) -> f (HalfOpenInterval a) Source # mapM :: Monad m => (a -> m b) -> HalfOpenInterval a -> m (HalfOpenInterval b) Source # sequence :: Monad m => HalfOpenInterval (m a) -> m (HalfOpenInterval a) Source # | |
| Show r => Show (HalfOpenInterval r) Source # | |
Defined in HGeometry.Interval.HalfOpen | |
| Eq r => Eq (HalfOpenInterval r) Source # | |
Defined in HGeometry.Interval.HalfOpen Methods (==) :: HalfOpenInterval r -> HalfOpenInterval r -> Bool Source # (/=) :: HalfOpenInterval r -> HalfOpenInterval r -> Bool Source # | |
| ConstructableInterval_ (HalfOpenInterval r) r Source # | |
Defined in HGeometry.Interval.HalfOpen Methods mkInterval :: StartPointOf (HalfOpenInterval r) -> EndPointOf (HalfOpenInterval r) -> HalfOpenInterval r Source # buildInterval :: StartPointOf (HalfOpenInterval r) -> EndPointOf (HalfOpenInterval r) -> HalfOpenInterval r Source # | |
| HasEnd (HalfOpenInterval r) r Source # | |
Defined in HGeometry.Interval.HalfOpen Methods end :: Lens' (HalfOpenInterval r) r Source # | |
| HasStart (HalfOpenInterval r) r Source # | |
Defined in HGeometry.Interval.HalfOpen Methods start :: Lens' (HalfOpenInterval r) r Source # | |
| IntervalLike_ (HalfOpenInterval r) r Source # | |
Defined in HGeometry.Interval.HalfOpen | |
| Interval_ (HalfOpenInterval r) r Source # | |
Defined in HGeometry.Interval.HalfOpen | |
| Ord r => HasIntersectionWith (ClosedInterval r) (HalfOpenInterval r) Source # | |
Defined in HGeometry.Interval.HalfOpen Methods intersects :: ClosedInterval r -> HalfOpenInterval r -> Bool Source # | |
| HasEndPoint (HalfOpenInterval r) (EndPoint 'Closed r) Source # | |
Defined in HGeometry.Interval.HalfOpen | |
| HasStartPoint (HalfOpenInterval r) (EndPoint 'Open r) Source # | |
Defined in HGeometry.Interval.HalfOpen Methods startPoint :: Lens' (HalfOpenInterval r) (EndPoint 'Open r) Source # | |
| Ord r => HasIntersectionWith (Point 1 r) (HalfOpenInterval r) Source # | |
Defined in HGeometry.Interval.HalfOpen Methods intersects :: Point 1 r -> HalfOpenInterval r -> Bool Source # | |
| type EndPointOf (HalfOpenInterval r) Source # | |
Defined in HGeometry.Interval.HalfOpen | |
| type StartPointOf (HalfOpenInterval r) Source # | |
Defined in HGeometry.Interval.HalfOpen | |
| type NumType (HalfOpenInterval r) Source # | |
Defined in HGeometry.Interval.HalfOpen | |
module HGeometry.Interval.Class
asClosedInterval :: Interval_ interval r => interval -> Maybe (ClosedInterval r) Source #
Try to interpret the interval as a ClosedInterval, i.e. with both endpoints Closed
asOpenInterval :: Interval_ interval r => interval -> Maybe (OpenInterval r) Source #
Try to interpret the interval as an OpenInterval, i.e. with both endpoints open
asAnInterval :: Interval_ interval r => interval -> Interval AnEndPoint r Source #
convert into an interval whose endpoints are explicitly tagged.
data Interval_x_IntervalIntersection r interval Source #
Data type representing intersections of intervals of the same type
Constructors
| Interval_x_Interval_Point !r | |
| Interval_x_Interval_Contained !interval | |
| Interval_x_Interval_Partial !interval |
Instances
| Functor (Interval_x_IntervalIntersection r) Source # | |
Defined in HGeometry.Interval.Internal Methods fmap :: (a -> b) -> Interval_x_IntervalIntersection r a -> Interval_x_IntervalIntersection r b Source # (<$) :: a -> Interval_x_IntervalIntersection r b -> Interval_x_IntervalIntersection r a Source # | |
| Foldable (Interval_x_IntervalIntersection r) Source # | |
Defined in HGeometry.Interval.Internal Methods fold :: Monoid m => Interval_x_IntervalIntersection r m -> m Source # foldMap :: Monoid m => (a -> m) -> Interval_x_IntervalIntersection r a -> m Source # foldMap' :: Monoid m => (a -> m) -> Interval_x_IntervalIntersection r a -> m Source # foldr :: (a -> b -> b) -> b -> Interval_x_IntervalIntersection r a -> b Source # foldr' :: (a -> b -> b) -> b -> Interval_x_IntervalIntersection r a -> b Source # foldl :: (b -> a -> b) -> b -> Interval_x_IntervalIntersection r a -> b Source # foldl' :: (b -> a -> b) -> b -> Interval_x_IntervalIntersection r a -> b Source # foldr1 :: (a -> a -> a) -> Interval_x_IntervalIntersection r a -> a Source # foldl1 :: (a -> a -> a) -> Interval_x_IntervalIntersection r a -> a Source # toList :: Interval_x_IntervalIntersection r a -> [a] Source # null :: Interval_x_IntervalIntersection r a -> Bool Source # length :: Interval_x_IntervalIntersection r a -> Int Source # elem :: Eq a => a -> Interval_x_IntervalIntersection r a -> Bool Source # maximum :: Ord a => Interval_x_IntervalIntersection r a -> a Source # minimum :: Ord a => Interval_x_IntervalIntersection r a -> a Source # sum :: Num a => Interval_x_IntervalIntersection r a -> a Source # product :: Num a => Interval_x_IntervalIntersection r a -> a Source # | |
| Traversable (Interval_x_IntervalIntersection r) Source # | |
Defined in HGeometry.Interval.Internal Methods traverse :: Applicative f => (a -> f b) -> Interval_x_IntervalIntersection r a -> f (Interval_x_IntervalIntersection r b) Source # sequenceA :: Applicative f => Interval_x_IntervalIntersection r (f a) -> f (Interval_x_IntervalIntersection r a) Source # mapM :: Monad m => (a -> m b) -> Interval_x_IntervalIntersection r a -> m (Interval_x_IntervalIntersection r b) Source # sequence :: Monad m => Interval_x_IntervalIntersection r (m a) -> m (Interval_x_IntervalIntersection r a) Source # | |
| (Show r, Show interval) => Show (Interval_x_IntervalIntersection r interval) Source # | |
Defined in HGeometry.Interval.Internal | |
| (Eq r, Eq interval) => Eq (Interval_x_IntervalIntersection r interval) Source # | |
Defined in HGeometry.Interval.Internal Methods (==) :: Interval_x_IntervalIntersection r interval -> Interval_x_IntervalIntersection r interval -> Bool Source # (/=) :: Interval_x_IntervalIntersection r interval -> Interval_x_IntervalIntersection r interval -> Bool Source # | |
| (Ord r, Ord interval) => Ord (Interval_x_IntervalIntersection r interval) Source # | |
Defined in HGeometry.Interval.Internal Methods compare :: Interval_x_IntervalIntersection r interval -> Interval_x_IntervalIntersection r interval -> Ordering Source # (<) :: Interval_x_IntervalIntersection r interval -> Interval_x_IntervalIntersection r interval -> Bool Source # (<=) :: Interval_x_IntervalIntersection r interval -> Interval_x_IntervalIntersection r interval -> Bool Source # (>) :: Interval_x_IntervalIntersection r interval -> Interval_x_IntervalIntersection r interval -> Bool Source # (>=) :: Interval_x_IntervalIntersection r interval -> Interval_x_IntervalIntersection r interval -> Bool Source # max :: Interval_x_IntervalIntersection r interval -> Interval_x_IntervalIntersection r interval -> Interval_x_IntervalIntersection r interval Source # min :: Interval_x_IntervalIntersection r interval -> Interval_x_IntervalIntersection r interval -> Interval_x_IntervalIntersection r interval Source # | |