hgeometry-combinatorial
Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellNone
LanguageGHC2021

HGeometry.ByIndex

Description

Types that have an Index, which is used to distinguish the items. Hence, Eq and Ord are *only* based on the Index.

Synopsis

Documentation

data ByIndex ix a Source #

Helper data type for which the Ord and Eq instance are by index.

Note that one may use the index as some sort of optimization. i.e. if the indices are the same, then the values are considerd the same

Constructors

ByIndex !ix !a 

Instances

Instances details
Foldable1 (ByIndex ix) Source # 
Instance details

Defined in HGeometry.ByIndex

Methods

fold1 :: Semigroup m => ByIndex ix m -> m #

foldMap1 :: Semigroup m => (a -> m) -> ByIndex ix a -> m #

foldMap1' :: Semigroup m => (a -> m) -> ByIndex ix a -> m #

toNonEmpty :: ByIndex ix a -> NonEmpty a #

maximum :: Ord a => ByIndex ix a -> a #

minimum :: Ord a => ByIndex ix a -> a #

head :: ByIndex ix a -> a #

last :: ByIndex ix a -> a #

foldrMap1 :: (a -> b) -> (a -> b -> b) -> ByIndex ix a -> b #

foldlMap1' :: (a -> b) -> (b -> a -> b) -> ByIndex ix a -> b #

foldlMap1 :: (a -> b) -> (b -> a -> b) -> ByIndex ix a -> b #

foldrMap1' :: (a -> b) -> (a -> b -> b) -> ByIndex ix a -> b #

Functor (ByIndex ix) Source # 
Instance details

Defined in HGeometry.ByIndex

Methods

fmap :: (a -> b) -> ByIndex ix a -> ByIndex ix b #

(<$) :: a -> ByIndex ix b -> ByIndex ix a #

Foldable (ByIndex ix) Source # 
Instance details

Defined in HGeometry.ByIndex

Methods

fold :: Monoid m => ByIndex ix m -> m #

foldMap :: Monoid m => (a -> m) -> ByIndex ix a -> m #

foldMap' :: Monoid m => (a -> m) -> ByIndex ix a -> m #

foldr :: (a -> b -> b) -> b -> ByIndex ix a -> b #

foldr' :: (a -> b -> b) -> b -> ByIndex ix a -> b #

foldl :: (b -> a -> b) -> b -> ByIndex ix a -> b #

foldl' :: (b -> a -> b) -> b -> ByIndex ix a -> b #

foldr1 :: (a -> a -> a) -> ByIndex ix a -> a #

foldl1 :: (a -> a -> a) -> ByIndex ix a -> a #

toList :: ByIndex ix a -> [a] #

null :: ByIndex ix a -> Bool #

length :: ByIndex ix a -> Int #

elem :: Eq a => a -> ByIndex ix a -> Bool #

maximum :: Ord a => ByIndex ix a -> a #

minimum :: Ord a => ByIndex ix a -> a #

sum :: Num a => ByIndex ix a -> a #

product :: Num a => ByIndex ix a -> a #

Traversable (ByIndex ix) Source # 
Instance details

Defined in HGeometry.ByIndex

Methods

traverse :: Applicative f => (a -> f b) -> ByIndex ix a -> f (ByIndex ix b) #

sequenceA :: Applicative f => ByIndex ix (f a) -> f (ByIndex ix a) #

mapM :: Monad m => (a -> m b) -> ByIndex ix a -> m (ByIndex ix b) #

sequence :: Monad m => ByIndex ix (m a) -> m (ByIndex ix a) #

Traversable1 (ByIndex ix) Source # 
Instance details

Defined in HGeometry.ByIndex

Methods

traverse1 :: Apply f => (a -> f b) -> ByIndex ix a -> f (ByIndex ix b) Source #

sequence1 :: Apply f => ByIndex ix (f b) -> f (ByIndex ix b) Source #

Eq ix => Eq (ByIndex ix a) Source # 
Instance details

Defined in HGeometry.ByIndex

Methods

(==) :: ByIndex ix a -> ByIndex ix a -> Bool #

(/=) :: ByIndex ix a -> ByIndex ix a -> Bool #

Ord ix => Ord (ByIndex ix a) Source # 
Instance details

Defined in HGeometry.ByIndex

Methods

compare :: ByIndex ix a -> ByIndex ix a -> Ordering #

(<) :: ByIndex ix a -> ByIndex ix a -> Bool #

(<=) :: ByIndex ix a -> ByIndex ix a -> Bool #

(>) :: ByIndex ix a -> ByIndex ix a -> Bool #

(>=) :: ByIndex ix a -> ByIndex ix a -> Bool #

max :: ByIndex ix a -> ByIndex ix a -> ByIndex ix a #

min :: ByIndex ix a -> ByIndex ix a -> ByIndex ix a #

theIndex :: forall ix1 a ix2 f. Functor f => (ix1 -> f ix2) -> ByIndex ix1 a -> f (ByIndex ix2 a) Source #

theValue :: forall ix a1 a2 f. Functor f => (a1 -> f a2) -> ByIndex ix a1 -> f (ByIndex ix a2) Source #