numeric-prelude-0.4.3: An experimental alternative hierarchy of numeric type classes

Safe HaskellNone
LanguageHaskell98

Number.DimensionTerm

Contents

Description

Synopsis

Number type

newtype T u a #

Constructors

Cons a 
Instances
(C u, C a b) => C a (T u b) # 
Instance details

Defined in Number.DimensionTerm

Methods

(*>) :: a -> T u b -> T u b #

(IsScalar u, C a b) => C a (T u b) # 
Instance details

Defined in Number.DimensionTerm

Methods

toScalar :: T u b -> a #

toMaybeScalar :: T u b -> Maybe a #

fromScalar :: a -> T u b #

Eq a => Eq (T u a) # 
Instance details

Defined in Number.DimensionTerm

Methods

(==) :: T u a -> T u a -> Bool #

(/=) :: T u a -> T u a -> Bool #

Ord a => Ord (T u a) # 
Instance details

Defined in Number.DimensionTerm

Methods

compare :: T u a -> T u a -> Ordering #

(<) :: T u a -> T u a -> Bool #

(<=) :: T u a -> T u a -> Bool #

(>) :: T u a -> T u a -> Bool #

(>=) :: T u a -> T u a -> Bool #

max :: T u a -> T u a -> T u a #

min :: T u a -> T u a -> T u a #

(C u, Show a) => Show (T u a) # 
Instance details

Defined in Number.DimensionTerm

Methods

showsPrec :: Int -> T u a -> ShowS #

show :: T u a -> String #

showList :: [T u a] -> ShowS #

NFData a => NFData (T u a) # 
Instance details

Defined in Number.DimensionTerm

Methods

rnf :: T u a -> () #

(C u, Random a) => Random (T u a) # 
Instance details

Defined in Number.DimensionTerm

Methods

randomR :: RandomGen g => (T u a, T u a) -> g -> (T u a, g) #

random :: RandomGen g => g -> (T u a, g) #

randomRs :: RandomGen g => (T u a, T u a) -> g -> [T u a] #

randoms :: RandomGen g => g -> [T u a] #

randomRIO :: (T u a, T u a) -> IO (T u a) #

randomIO :: IO (T u a) #

(C u, C a) => C (T u a) # 
Instance details

Defined in Number.DimensionTerm

Methods

zero :: T u a #

(+) :: T u a -> T u a -> T u a #

(-) :: T u a -> T u a -> T u a #

negate :: T u a -> T u a #

(IsScalar u, C a) => C (T u a) # 
Instance details

Defined in Number.DimensionTerm

Methods

(*) :: T u a -> T u a -> T u a #

one :: T u a #

fromInteger :: Integer -> T u a #

(^) :: T u a -> Integer -> T u a #

(IsScalar u, C a) => C (T u a) # 
Instance details

Defined in Number.DimensionTerm

Methods

(/) :: T u a -> T u a -> T u a #

recip :: T u a -> T u a #

fromRational' :: Rational -> T u a #

(^-) :: T u a -> Integer -> T u a #

fromNumber :: a -> Scalar a #

toNumber :: Scalar a -> a #

fromNumberWithDimension :: C u => u -> a -> T u a #

toNumberWithDimension :: C u => u -> T u a -> a #

(&*&) :: (C u, C v, C a) => T u a -> T v a -> T (Mul u v) a infixl 7 #

(&/&) :: (C u, C v, C a) => T u a -> T v a -> T (Mul u (Recip v)) a infixl 7 #

mulToScalar :: (C u, C a) => T u a -> T (Recip u) a -> a #

divToScalar :: (C u, C a) => T u a -> T u a -> a #

cancelToScalar :: C u => T (Mul u (Recip u)) a -> a #

recip :: (C u, C a) => T u a -> T (Recip u) a #

unrecip :: (C u, C a) => T (Recip u) a -> T u a #

sqr :: (C u, C a) => T u a -> T (Sqr u) a #

sqrt :: (C u, C a) => T (Sqr u) a -> T u a #

abs :: (C u, C a) => T u a -> T u a #

absSignum :: (C u, C a) => T u a -> (T u a, a) #

scale :: (C u, C a) => a -> T u a -> T u a #

(*&) :: (C u, C a) => a -> T u a -> T u a infixl 7 #

rewriteDimension :: (C u, C v) => (u -> v) -> T u a -> T v a #

Example constructors

type Scalar a = T Scalar a #

type Length a = T Length a #

type Time a = T Time a #

type Mass a = T Mass a #

type Charge a = T Charge a #

type Angle a = T Angle a #

type Frequency a = T Frequency a #

type Voltage a = T Voltage a #

scalar :: a -> Scalar a #

length :: a -> Length a #

time :: a -> Time a #

mass :: a -> Mass a #

charge :: a -> Charge a #

angle :: a -> Angle a #

voltage :: a -> Voltage a #