hgeometry-kernel
Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellNone
LanguageGHC2024

HGeometry.Interval

Description

Intervals

Synopsis

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

Instances details
ClosedInterval_ (ClosedInterval r) r Source # 
Instance details

Defined in HGeometry.Interval.Internal

ConstructableClosedInterval_ (ClosedInterval r) r Source # 
Instance details

Defined in HGeometry.Interval.Internal

ConstructableOpenInterval_ (OpenInterval r) r Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

mkOpenInterval :: r -> r -> OpenInterval r Source #

OpenInterval_ (OpenInterval r) r Source # 
Instance details

Defined in HGeometry.Interval.Internal

Ord r => HasIntersectionWith (ClosedInterval r) (HalfOpenInterval r) Source # 
Instance details

Defined in HGeometry.Interval.HalfOpen

Ord r => HasIntersectionWith (OpenInterval r) (ClosedInterval r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Ord r => HasIntersectionWith (OpenInterval r) (OpenInterval r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Ord r => IsIntersectableWith (ClosedInterval r) (ClosedInterval r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Ord r => IsIntersectableWith (OpenInterval r) (OpenInterval r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

(Ord r, IxValue (endPoint r) ~ r, EndPoint_ (endPoint r)) => HasIntersectionWith (ClosedInterval r) (Interval endPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

intersects :: ClosedInterval r -> Interval endPoint r -> Bool Source #

Ord r => HasIntersectionWith (OpenInterval r) (Interval AnEndPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Functor endPoint => Functor (Interval endPoint) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

fmap :: (a -> b) -> Interval endPoint a -> Interval endPoint b Source #

(<$) :: a -> Interval endPoint b -> Interval endPoint a Source #

Foldable endPoint => Foldable (Interval endPoint) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

fold :: Monoid m => Interval endPoint m -> m Source #

foldMap :: Monoid m => (a -> m) -> Interval endPoint a -> m Source #

foldMap' :: Monoid m => (a -> m) -> Interval endPoint a -> m Source #

foldr :: (a -> b -> b) -> b -> Interval endPoint a -> b Source #

foldr' :: (a -> b -> b) -> b -> Interval endPoint a -> b Source #

foldl :: (b -> a -> b) -> b -> Interval endPoint a -> b Source #

foldl' :: (b -> a -> b) -> b -> Interval endPoint a -> b Source #

foldr1 :: (a -> a -> a) -> Interval endPoint a -> a Source #

foldl1 :: (a -> a -> a) -> Interval endPoint a -> a Source #

toList :: Interval endPoint a -> [a] Source #

null :: Interval endPoint a -> Bool Source #

length :: Interval endPoint a -> Int Source #

elem :: Eq a => a -> Interval endPoint a -> Bool Source #

maximum :: Ord a => Interval endPoint a -> a Source #

minimum :: Ord a => Interval endPoint a -> a Source #

sum :: Num a => Interval endPoint a -> a Source #

product :: Num a => Interval endPoint a -> a Source #

Traversable endPoint => Traversable (Interval endPoint) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

traverse :: Applicative f => (a -> f b) -> Interval endPoint a -> f (Interval endPoint b) Source #

sequenceA :: Applicative f => Interval endPoint (f a) -> f (Interval endPoint a) Source #

mapM :: Monad m => (a -> m b) -> Interval endPoint a -> m (Interval endPoint b) Source #

sequence :: Monad m => Interval endPoint (m a) -> m (Interval endPoint a) Source #

Ord r => HasIntersectionWith (Point 1 r) (ClosedInterval r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

intersects :: Point 1 r -> ClosedInterval r -> Bool Source #

Ord r => HasIntersectionWith (Point 1 r) (OpenInterval r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

intersects :: Point 1 r -> OpenInterval r -> Bool Source #

Ord r => IsIntersectableWith (Point 1 r) (ClosedInterval r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Ord r => IsIntersectableWith (Point 1 r) (OpenInterval r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Ord r => HasIntersectionWith (Point 1 r) (Interval AnEndPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Ord r => IsIntersectableWith (Point 1 r) (Interval AnEndPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

NFData (endPoint r) => NFData (Interval endPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

rnf :: Interval endPoint r -> () Source #

Generic (Interval endPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Associated Types

type Rep (Interval endPoint r) 
Instance details

Defined in HGeometry.Interval.Internal

type Rep (Interval endPoint r) = D1 ('MetaData "Interval" "HGeometry.Interval.Internal" "hgeometry-kernel-1.0.0.0-inplace" 'True) (C1 ('MetaCons "MkInterval" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Vector 2 (endPoint r)))))

Methods

from :: Interval endPoint r -> Rep (Interval endPoint r) x Source #

to :: Rep (Interval endPoint r) x -> Interval endPoint r Source #

Read (endPoint r) => Read (Interval endPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

readsPrec :: Int -> ReadS (Interval endPoint r) Source #

readList :: ReadS [Interval endPoint r] Source #

readPrec :: ReadPrec (Interval endPoint r) Source #

readListPrec :: ReadPrec [Interval endPoint r] Source #

Show (endPoint r) => Show (Interval endPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

showsPrec :: Int -> Interval endPoint r -> ShowS Source #

show :: Interval endPoint r -> String Source #

showList :: [Interval endPoint r] -> ShowS Source #

Eq (endPoint r) => Eq (Interval endPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

(==) :: Interval endPoint r -> Interval endPoint r -> Bool Source #

(/=) :: Interval endPoint r -> Interval endPoint r -> Bool Source #

Ord (endPoint r) => Ord (Interval endPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

compare :: Interval endPoint r -> Interval endPoint r -> Ordering Source #

(<) :: Interval endPoint r -> Interval endPoint r -> Bool Source #

(<=) :: Interval endPoint r -> Interval endPoint r -> Bool Source #

(>) :: Interval endPoint r -> Interval endPoint r -> Bool Source #

(>=) :: Interval endPoint r -> Interval endPoint r -> Bool Source #

max :: Interval endPoint r -> Interval endPoint r -> Interval endPoint r Source #

min :: Interval endPoint r -> Interval endPoint r -> Interval endPoint r Source #

(EndPoint_ (endPoint r), IxValue (endPoint r) ~ r) => ConstructableInterval_ (Interval endPoint r) r Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

mkInterval :: StartPointOf (Interval endPoint r) -> EndPointOf (Interval endPoint r) -> Interval endPoint r Source #

buildInterval :: StartPointOf (Interval endPoint r) -> EndPointOf (Interval endPoint r) -> Interval endPoint r Source #

(EndPoint_ (endPoint r), IxValue (endPoint r) ~ r) => HasEnd (Interval endPoint r) r Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

end :: Lens' (Interval endPoint r) r Source #

(EndPoint_ (endPoint r), IxValue (endPoint r) ~ r) => HasStart (Interval endPoint r) r Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

start :: Lens' (Interval endPoint r) r Source #

(EndPoint_ (endPoint r), IxValue (endPoint r) ~ r) => IntervalLike_ (Interval endPoint r) r Source # 
Instance details

Defined in HGeometry.Interval.Internal

(EndPoint_ (endPoint r), IxValue (endPoint r) ~ r) => Interval_ (Interval endPoint r) r Source # 
Instance details

Defined in HGeometry.Interval.Internal

Ord r => HasIntersectionWith (Interval AnEndPoint r) (ClosedInterval r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Ord r => HasIntersectionWith (Interval AnEndPoint r) (OpenInterval r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

HasEndPoint (Interval endPoint r) (endPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

endPoint :: Lens' (Interval endPoint r) (endPoint r) Source #

HasStartPoint (Interval endPoint r) (endPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Methods

startPoint :: Lens' (Interval endPoint r) (endPoint r) Source #

Ord r => HasIntersectionWith (Interval AnEndPoint r) (Interval AnEndPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Ord r => IsIntersectableWith (Interval AnEndPoint r) (Interval AnEndPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

type Intersection (Point 1 r) (Interval endPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

type Intersection (Point 1 r) (Interval endPoint r) = Maybe r
type Rep (Interval endPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

type Rep (Interval endPoint r) = D1 ('MetaData "Interval" "HGeometry.Interval.Internal" "hgeometry-kernel-1.0.0.0-inplace" 'True) (C1 ('MetaCons "MkInterval" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Vector 2 (endPoint r)))))
type EndPointOf (Interval endPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

type EndPointOf (Interval endPoint r) = endPoint r
type StartPointOf (Interval endPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

type StartPointOf (Interval endPoint r) = endPoint r
type NumType (Interval endPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

type NumType (Interval endPoint r) = r
type Intersection (Interval endPoint r) (Interval endPoint r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

type Intersection (Interval endPoint r) (Interval endPoint r) = Maybe (Interval_x_IntervalIntersection r (Interval endPoint r))

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

Instances details
Functor HalfOpenInterval Source # 
Instance details

Defined in HGeometry.Interval.HalfOpen

Foldable HalfOpenInterval Source # 
Instance details

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 # 
Instance details

Defined in HGeometry.Interval.HalfOpen

Show r => Show (HalfOpenInterval r) Source # 
Instance details

Defined in HGeometry.Interval.HalfOpen

Eq r => Eq (HalfOpenInterval r) Source # 
Instance details

Defined in HGeometry.Interval.HalfOpen

ConstructableInterval_ (HalfOpenInterval r) r Source # 
Instance details

Defined in HGeometry.Interval.HalfOpen

HasEnd (HalfOpenInterval r) r Source # 
Instance details

Defined in HGeometry.Interval.HalfOpen

HasStart (HalfOpenInterval r) r Source # 
Instance details

Defined in HGeometry.Interval.HalfOpen

IntervalLike_ (HalfOpenInterval r) r Source # 
Instance details

Defined in HGeometry.Interval.HalfOpen

Interval_ (HalfOpenInterval r) r Source # 
Instance details

Defined in HGeometry.Interval.HalfOpen

Ord r => HasIntersectionWith (ClosedInterval r) (HalfOpenInterval r) Source # 
Instance details

Defined in HGeometry.Interval.HalfOpen

HasEndPoint (HalfOpenInterval r) (EndPoint 'Closed r) Source # 
Instance details

Defined in HGeometry.Interval.HalfOpen

HasStartPoint (HalfOpenInterval r) (EndPoint 'Open r) Source # 
Instance details

Defined in HGeometry.Interval.HalfOpen

Ord r => HasIntersectionWith (Point 1 r) (HalfOpenInterval r) Source # 
Instance details

Defined in HGeometry.Interval.HalfOpen

type EndPointOf (HalfOpenInterval r) Source # 
Instance details

Defined in HGeometry.Interval.HalfOpen

type StartPointOf (HalfOpenInterval r) Source # 
Instance details

Defined in HGeometry.Interval.HalfOpen

type NumType (HalfOpenInterval r) Source # 
Instance details

Defined in HGeometry.Interval.HalfOpen

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

Instances

Instances details
Functor (Interval_x_IntervalIntersection r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Foldable (Interval_x_IntervalIntersection r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

Traversable (Interval_x_IntervalIntersection r) Source # 
Instance details

Defined in HGeometry.Interval.Internal

(Show r, Show interval) => Show (Interval_x_IntervalIntersection r interval) Source # 
Instance details

Defined in HGeometry.Interval.Internal

(Eq r, Eq interval) => Eq (Interval_x_IntervalIntersection r interval) Source # 
Instance details

Defined in HGeometry.Interval.Internal

(Ord r, Ord interval) => Ord (Interval_x_IntervalIntersection r interval) Source # 
Instance details

Defined in HGeometry.Interval.Internal