| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
NumHask.Range
Description
representation of a continuous range of a type
- newtype Range a = Range' (a, a)
- pattern Range :: a -> a -> Range a
- gridSensible :: (FromInteger a, Fractional a, QuotientField a Integer, ExpField a) => Pos -> Range a -> Integer -> [a]
Documentation
A continuous range over type a
>>>let a = Range (-1) 1>>>aRange -1 1>>>fmap (+1) (Range 1 2)Range 2 3>>>one :: Range DoubleRange -0.5 0.5>>>zero :: Range DoubleRange Infinity -Infinity
as a Field instance
>>>Range 0 1 + zeroRange 0.0 1.0>>>Range 0 1 + Range 2 3Range 0.0 3.0>>>Range 1 1 - oneRange 0.5 1.0>>>Range 0 1 * oneRange 0.0 1.0>>>Range 0 1 / oneRange 0.0 1.0>>>P.singleton 2.3 :: Range DoubleRange 2.3 2.3>>>abs (Range 1 0)Range 0.0 1.0>>>sign (Range 1 0) == negate oneTrue
Idempotent
>>>Range 0 2 + Range 0 2Range 0.0 2.0
as a space instance
>>>project (Range 0 1) (Range 1 4) 0.52.5>>>grid OuterPos (Range 0 10) 5[0.0,2.0,4.0,6.0,8.0,10.0]>>>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 OuterPos (Range (-12) 23) 6[-10.0,-5.0,0.0,5.0,10.0,15.0,20.0]
Constructors
| Range' (a, a) |
Instances
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.
gridSensible :: (FromInteger a, Fractional a, QuotientField a Integer, ExpField a) => Pos -> Range a -> Integer -> [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