numhask-range-0.0.1: see readme.md

Safe HaskellNone
LanguageHaskell2010

NumHask.Range

Synopsis

Documentation

newtype Range a Source #

a range represented by a (minimum, maximum) tuple very similar to https://hackage.haskell.org/package/intervals-0.7.2 but the metaphor and purpose there is closer to a fuzzy value around a central point.

Constructors

Range 

Fields

Instances

Functor Range Source # 

Methods

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

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

Ord a => AdditiveHomomorphic a (Range a) Source #

natural interpretation of an a as a `Range a` is a singular Range

Methods

plushom :: a -> Range a #

Eq a => Eq (Range a) Source # 

Methods

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

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

Ord a => Ord (Range a) Source # 

Methods

compare :: Range a -> Range a -> Ordering #

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

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

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

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

max :: Range a -> Range a -> Range a #

min :: Range a -> Range a -> Range a #

Show a => Show (Range a) Source # 

Methods

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

show :: Range a -> String #

showList :: [Range a] -> ShowS #

Ord a => Semigroup (Range a) Source # 

Methods

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

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

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

(AdditiveUnital (Range a), Semigroup (Range a)) => Monoid (Range a) Source # 

Methods

mempty :: Range a #

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

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

(Ord a, Arbitrary a) => Arbitrary (Range a) Source # 

Methods

arbitrary :: Gen (Range a) #

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

Ord a => AdditiveMagma (Range a) Source #

the convex hull as plus seems like a natural choice, given the cute zero definition.

Methods

plus :: Range a -> Range a -> Range a #

(Ord a, BoundedField a) => AdditiveUnital (Range a) Source # 

Methods

zero :: Range a #

Ord a => AdditiveAssociative (Range a) Source # 
Ord a => AdditiveCommutative (Range a) Source # 
(Ord a, BoundedField a) => Additive (Range a) Source # 

Methods

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

BoundedField a => MultiplicativeMagma (Range a) Source #

times may well be some sort of affine transformation lurking under the hood

Methods

times :: Range a -> Range a -> Range a #

BoundedField a => MultiplicativeUnital (Range a) Source #

The unital object derives from:

view range one = one view mid zero = zero ie (-0.5,0.5)

Methods

one :: Range a #

BoundedField a => MultiplicativeAssociative (Range a) Source # 
(Ord a, BoundedField a) => MultiplicativeInvertible (Range a) Source # 

Methods

recip :: Range a -> Range a #

(Ord a, BoundedField a) => MultiplicativeLeftCancellative (Range a) Source # 

Methods

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

(Ord a, BoundedField a) => MultiplicativeRightCancellative (Range a) Source # 

Methods

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

AdditiveGroup a => Normed (Range a) a Source # 

Methods

size :: Range a -> a #

(Ord a, AdditiveGroup a) => Metric (Range a) a Source # 

Methods

distance :: Range a -> Range a -> a #

BoundedField a => AdditiveHomomorphic (Range a) a Source #

natural interpretation of a `Range a` as an a is the mid-point

Methods

plushom :: Range a -> a #

(...) :: Ord a => a -> a -> Range a Source #

posit :: Ord a => Range a -> Range a Source #

element :: Ord a => a -> Range a -> Bool Source #

determine whether a point is within the range

singular :: Eq a => Range a -> Bool Source #

is the range a singleton point

mirrored :: Ord a => Range a -> Bool Source #

is the range low higher than the high there well may be an interesting complex-like set of operations on mirrored ranges

intersection :: Ord a => Range a -> Range a -> Range a Source #

contains :: Ord a => Range a -> Range a -> Bool Source #

range :: (Foldable f, Ord a, BoundedField a) => f a -> Range a Source #

range of a foldable

rescaleP :: Field b => Range b -> Range b -> b -> b Source #

`rescaleP rold rnew p` rescales a data point from an old range to a new range rescaleP o n (view low o) == view low n rescaleP o n (view high o) == view high n rescaleP a a == id

data TickPos Source #

where on the Range should the ticks be placed

Instances

ticks :: (Field a, FromInteger a) => TickPos -> Range a -> Int -> [a] Source #

turn a range into a ist of n as, that are (view width x/n) apart

ticksSensible :: (Fractional a, Ord a, FromInteger a, QuotientField a, ExpRing a, MultiplicativeGroup a) => TickPos -> Range a -> Int -> [a] Source #

turn a range into n as pleasing to human sense and sensibility the as may well lie outside the original range as a result

fromTicks :: [a] -> [Range a] Source #

take a list of (ascending) as and make some (ascending) ranges based on OuterPos fromTicks . ticks OuterPos == id ticks OuterPos . fromTicks == id