numhask-space-0.1.1: numerical spaces

Safe HaskellNone
LanguageHaskell2010

NumHask.Data.Range

Description

An Space with no empty, a semigroup based on a convex hull union, and a monoid on a negative space.

Synopsis

Documentation

newtype Range a Source #

A continuous range over type a

>>> let a = Range (-1) 1
>>> a
Range -1 1
>>> fmap (+1) (Range 1 2)
Range 2 3
>>> one :: Range Double
Range -0.5 0.5
>>> zero :: Range Double
Range Infinity -Infinity

as a Field instance

>>> Range 0 1 + zero
Range 0.0 1.0
>>> Range 0 1 + Range 2 3
Range 0.0 3.0
>>> Range 1 1 - one
Range 0.5 1.0
>>> Range 0 1 * one
Range 0.0 1.0
>>> Range 0 1 / one
Range 0.0 1.0
>>> abs (Range 1 0)
Range 0.0 1.0
>>> sign (Range 1 0) == negate one
True

Idempotent

>>> Range 0 2 + Range 0 2
Range 0.0 2.0

as a space instance

>>> NumHask.Space.project (Range 0 1) (Range 1 4) 0.5
2.5
>>> NumHask.Space.grid NumHask.Space.OuterPos (Range 0 10) 5
[0.0,2.0,4.0,6.0,8.0,10.0]
>>> NumHask.Space.gridSpace (Range 0 1) 4
[Range 0.0 0.25,Range 0.25 0.5,Range 0.5 0.75,Range 0.75 1.0]
>>> gridSensible NumHask.Space.OuterPos (Range (-12.0) 23.0) 6
[-10.0,-5.0,0.0,5.0,10.0,15.0,20.0]

Constructors

Range' (a, a) 
Instances
Functor Range Source # 
Instance details

Defined in NumHask.Data.Range

Methods

fmap :: (a -> b) -> Range a -> Range b #

(<$) :: a -> Range b -> Range a #

Applicative Range Source # 
Instance details

Defined in NumHask.Data.Range

Methods

pure :: a -> Range a #

(<*>) :: Range (a -> b) -> Range a -> Range b #

liftA2 :: (a -> b -> c) -> Range a -> Range b -> Range c #

(*>) :: Range a -> Range b -> Range b #

(<*) :: Range a -> Range b -> Range a #

Foldable Range Source # 
Instance details

Defined in NumHask.Data.Range

Methods

fold :: Monoid m => Range m -> m #

foldMap :: Monoid m => (a -> m) -> Range a -> m #

foldr :: (a -> b -> b) -> b -> Range a -> b #

foldr' :: (a -> b -> b) -> b -> Range a -> b #

foldl :: (b -> a -> b) -> b -> Range a -> b #

foldl' :: (b -> a -> b) -> b -> Range a -> b #

foldr1 :: (a -> a -> a) -> Range a -> a #

foldl1 :: (a -> a -> a) -> Range a -> a #

toList :: Range a -> [a] #

null :: Range a -> Bool #

length :: Range a -> Int #

elem :: Eq a => a -> Range a -> Bool #

maximum :: Ord a => Range a -> a #

minimum :: Ord a => Range a -> a #

sum :: Num a => Range a -> a #

product :: Num a => Range a -> a #

Traversable Range Source # 
Instance details

Defined in NumHask.Data.Range

Methods

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

sequenceA :: Applicative f => Range (f a) -> f (Range a) #

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

sequence :: Monad m => Range (m a) -> m (Range a) #

Distributive Range Source # 
Instance details

Defined in NumHask.Data.Range

Methods

distribute :: Functor f => f (Range a) -> Range (f a) #

collect :: Functor f => (a -> Range b) -> f a -> Range (f b) #

distributeM :: Monad m => m (Range a) -> Range (m a) #

collectM :: Monad m => (a -> Range b) -> m a -> Range (m b) #

Representable Range Source # 
Instance details

Defined in NumHask.Data.Range

Associated Types

type Rep Range :: Type #

Methods

tabulate :: (Rep Range -> a) -> Range a #

index :: Range a -> Rep Range -> a #

Eq1 Range Source # 
Instance details

Defined in NumHask.Data.Range

Methods

liftEq :: (a -> b -> Bool) -> Range a -> Range b -> Bool #

Show1 Range Source # 
Instance details

Defined in NumHask.Data.Range

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Range a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Range a] -> ShowS #

Traversable1 Range Source # 
Instance details

Defined in NumHask.Data.Range

Methods

traverse1 :: Apply f => (a -> f b) -> Range a -> f (Range b) #

sequence1 :: Apply f => Range (f b) -> f (Range b) #

Foldable1 Range Source # 
Instance details

Defined in NumHask.Data.Range

Methods

fold1 :: Semigroup m => Range m -> m #

foldMap1 :: Semigroup m => (a -> m) -> Range a -> m #

toNonEmpty :: Range a -> NonEmpty a #

Apply Range Source # 
Instance details

Defined in NumHask.Data.Range

Methods

(<.>) :: Range (a -> b) -> Range a -> Range b #

(.>) :: Range a -> Range b -> Range b #

(<.) :: Range a -> Range b -> Range a #

liftF2 :: (a -> b -> c) -> Range a -> Range b -> Range c #

Eq a => Eq (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Methods

(==) :: Range a -> Range a -> Bool #

(/=) :: Range a -> Range a -> Bool #

Show a => Show (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Methods

showsPrec :: Int -> Range a -> ShowS #

show :: Range a -> String #

showList :: [Range a] -> ShowS #

Generic (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Associated Types

type Rep (Range a) :: Type -> Type #

Methods

from :: Range a -> Rep (Range a) x #

to :: Rep (Range a) x -> Range a #

BoundedLattice a => Semigroup (Range a) Source #

Monoid based on convex hull union

Instance details

Defined in NumHask.Data.Range

Methods

(<>) :: Range a -> Range a -> Range a #

sconcat :: NonEmpty (Range a) -> Range a #

stimes :: Integral b => b -> Range a -> Range a #

BoundedLattice a => Monoid (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Methods

mempty :: Range a #

mappend :: Range a -> Range a -> Range a #

mconcat :: [Range a] -> Range a #

(Multiplicative a, Subtractive a, Lattice a) => Signed (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Methods

sign :: Range a -> Range a #

abs :: Range a -> Range a #

JoinSemiLattice a => JoinSemiLattice (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Methods

(\/) :: Range a -> Range a -> Range a #

MeetSemiLattice a => MeetSemiLattice (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Methods

(/\) :: Range a -> Range a -> Range a #

BoundedLattice a => BoundedJoinSemiLattice (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Methods

bottom :: Range a #

BoundedLattice a => BoundedMeetSemiLattice (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Methods

top :: Range a #

(FromInteger a, Lattice a) => FromInteger (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Methods

fromInteger :: Integer -> Range a #

Additive a => AdditiveAction (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Methods

(.+) :: Range a -> Actor (Range a) -> Range a #

(+.) :: Actor (Range a) -> Range a -> Range a #

Subtractive a => SubtractiveAction (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Methods

(.-) :: Range a -> Actor (Range a) -> Range a #

(-.) :: Actor (Range a) -> Range a -> Range a #

Multiplicative a => MultiplicativeAction (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Methods

(.*) :: Range a -> Actor (Range a) -> Range a #

(*.) :: Actor (Range a) -> Range a -> Range a #

Divisive a => DivisiveAction (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Methods

(./) :: Range a -> Actor (Range a) -> Range a #

(/.) :: Actor (Range a) -> Range a -> Range a #

(Multiplicative a, Lattice a) => Multiplicative (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Methods

(*) :: Range a -> Range a -> Range a #

one :: Range a #

(BoundedLattice a, Epsilon a, Divisive a) => Divisive (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Methods

recip :: Range a -> Range a #

(/) :: Range a -> Range a -> Range a #

(Additive a, Lattice a) => Additive (Range a) Source #

Numeric algebra based on Interval arithmetic https://en.wikipedia.org/wiki/Interval_arithmetic

Instance details

Defined in NumHask.Data.Range

Methods

(+) :: Range a -> Range a -> Range a #

zero :: Range a #

(Subtractive a, Lattice a) => Subtractive (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Methods

negate :: Range a -> Range a #

(-) :: Range a -> Range a -> Range a #

(Lattice a, Field a, Subtractive a, FromInteger a) => FieldSpace (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Associated Types

type Grid (Range a) :: Type Source #

Methods

grid :: Pos -> Range a -> Grid (Range a) -> [Element (Range a)] Source #

gridSpace :: Range a -> Grid (Range a) -> [Range a] Source #

Lattice a => Space (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

Associated Types

type Element (Range a) :: Type Source #

type Rep Range Source # 
Instance details

Defined in NumHask.Data.Range

type Rep Range = Bool
type Rep (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

type Rep (Range a) = D1 (MetaData "Range" "NumHask.Data.Range" "numhask-space-0.1.1-KhD7xYpwLfOGsUJAt0HVyO" True) (C1 (MetaCons "Range'" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (a, a))))
type Actor (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

type Actor (Range a) = a
type Grid (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

type Grid (Range a) = Int
type Element (Range a) Source # 
Instance details

Defined in NumHask.Data.Range

type Element (Range a) = a

pattern Range :: a -> a -> Range a Source #

A tuple is the preferred concrete implementation of a Range, due to many libraries having substantial optimizations for tuples already (eg Vector). 'Pattern Synonyms' allow us to recover a constructor without the need for tuple syntax.