Safe Haskell | Trustworthy |
---|---|
Language | Haskell2010 |
This module contains auxiliary definitions related to dimensional analysis. This is based on the SI system of units. This module supports compile-time checking for dimensional units. This is accomplished by a set of newtype wrappers of Double.
It is not necessarily a good idea to make the checking in compile-time. In particular, this can prevent operations to be available, e.g. Num class is not supported for compile-time checked quantities. Num because it has wrong type for the multiplication and division. Instead of Num, VectorSpace operations and operations defined in this module should be used.
However, these types can distinguish quantities even in cases where the dimensions match, e.g. radians and steradians. Explicit conversions are nonetheless available when dimensions match.
Read operations are pretty strict in that they require exactly
the syntax "double unit", where unit is the result of
unitOf (fromAmount 0 :: T)
. Example: (read "3 m^2" :: SquareLength)
This can sometimes be unintuitive and is sensitive to the algorithm
used to print units.
For example: unitOf (fromAmount 0 :: Mass :/ Length) == "m^-1 kg"
.
If in doubt, it's possible to use the read algorithm handling all units
from DimensionalAnalysis module.
However, it's very much likely that compile-time checked newtypes are faster at run-time than using the run-time checked quantities. This is probably the primary reason for wanting this module instead of run-time checked version.
Also it's not possible to cast input data directly without run-time check to a compile-time checked quantity.
See "Barton&Nackman: Scientific and Engineering C++" for C++ approach to dimensional analysis.
Synopsis
- type UnitName u = Scalar u -> u
- (*%%) :: Scalar u ~ Scalar u' => UnitName u -> UnitName u' -> UnitName (u :* u')
- (/%%) :: Scalar u ~ Scalar u' => UnitName u -> UnitName u' -> UnitName (u :/ u')
- (*%) :: (LiteralUnit u, LiteralUnit w, Num (Scalar u), Scalar u ~ Scalar w) => u -> w -> u :* w
- (/%) :: (Fractional (Scalar u), LiteralUnit u, LiteralUnit w, Scalar u ~ Scalar w) => u -> w -> u :/ w
- unitNameToDimension :: (Num (Scalar u), Unit u) => UnitName u -> Dimension
- mapAmount :: LiteralUnit a => (Scalar a -> Scalar a) -> a -> a
- mapAmount2 :: LiteralUnit a => (Scalar a -> Scalar a -> Scalar a) -> a -> a -> a
- asUnit :: (MonadFail m, Show (Scalar u), Show u, LiteralUnit u, Fractional (Scalar u)) => Quantity (Scalar u) -> UnitName u -> m u
- quantity :: LiteralUnit u => u -> Quantity (Scalar u)
- data a :/ b = QDivide {
- qdivide_amount :: !(Scalar a)
- qdivide_dividend_unit :: UnitName a
- qdivide_divisor_unit :: UnitName b
- data a :* b = QProduct {
- qproduct_amount :: !(Scalar a)
- qproduct_first_unit :: UnitName a
- qproduct_second_unit :: UnitName b
- newtype Dimensionless = Dimensionless {}
- newtype Information = Bits {}
- newtype SoundLevel = SoundAmplitude {}
- newtype Angle = Radians {}
- pi_angle :: Angle
- fraction_of_circle :: Rational -> Angle
- asin_angle :: Double -> Angle
- acos_angle :: Double -> Angle
- atan_angle :: Double -> Angle
- sin_angle :: Angle -> Double
- cos_angle :: Angle -> Double
- tan_angle :: Angle -> Double
- log_angle :: Complex Double -> Angle
- exp_angle :: Angle -> Complex Double
- fromPolar :: (Unit u, Scalar u ~ Double) => u -> Angle -> Complex u
- toPolar :: (LiteralUnit u, Scalar u ~ Double) => Complex u -> (u, Angle)
- newtype DegreesAngle = Degrees {}
- degreesAngle :: DegreesAngle -> Angle
- angleDegrees :: Angle -> DegreesAngle
- isoDegreesToAngle :: DegreesAngle :==: Angle
- newtype SolidAngle = Steradians {
- steradians :: Double
- show_unit :: (Unit u, Show (Scalar u)) => u -> String
- read_unit :: (Unit u, Read (Scalar u)) => UnitName u -> ReadPrec u
- newtype Percentage = Percentages {}
- newtype Acceleration = MetersPerSquareSecond {}
- newtype Velocity = MetersPerSecond {}
- newtype SquareLength = SquareMeters {}
- newtype CubicLength = CubicMeters {}
- sqrt_length :: SquareLength -> Length
- square_length :: Length -> SquareLength
- times_length :: Length -> Length -> SquareLength
- newtype Length = Meters {}
- newtype Mass = Kilograms {}
- newtype Time = Seconds {}
- newtype Current = Amperes {}
- newtype DegreesFahrenheit = DegreesFahrenheit {}
- newtype DegreesTemperature = DegreesCelcius {}
- newtype Temperature = DegreesKelvin {}
- isoCelciusToKelvin :: DegreesTemperature :==: Temperature
- celciusToKelvin :: DegreesTemperature -> Temperature
- kelvinToCelcius :: Temperature -> DegreesTemperature
- newtype Substance = Moles {}
- newtype Intensity = Candelas {}
- newtype Frequency = Hertzes {}
- newtype Force = Newtons {}
- newtype Torque = NewtonMeters {}
- newtype Pressure = Pascals {}
- newtype Energy = Joules {}
- newtype Power = Watts {}
- newtype Charge = Coulombs {}
- newtype Voltage = Volts {}
- newtype Capacitance = Farads {}
- newtype Resistance = Ohms {}
- newtype Conductance = Siemenses {}
- newtype Flux = Webers {}
- newtype FluxDensity = Teslas {}
- newtype Inductance = Henrys {}
- newtype LuminousFlux = Lumens {}
- newtype Illuminance = Luxes {}
- newtype Radioactivity = Becquerels {
- becquerels :: Double
- newtype AbsorbedDose = Grays {}
- newtype EquivalentDose = Sieverts {}
- newtype CatalyticActivity = Katals {}
Documentation
type UnitName u = Scalar u -> u Source #
Notice that fromAmount
from Unit class
has type (Unit u) => UnitName u
.
However usually a concrete constructor of one of the newtypes is used as value.
(*%) :: (LiteralUnit u, LiteralUnit w, Num (Scalar u), Scalar u ~ Scalar w) => u -> w -> u :* w Source #
heterogeneous product respecting units
It may be necessary to use quantity
operation
to convert to run-time representation after using this, because the result type
accumulates new parts with each use without considering what the total
dimension of the result is. This can produce excessively complicated types, because
the type represents the structure of the expression rather than structure of
the result.
(/%) :: (Fractional (Scalar u), LiteralUnit u, LiteralUnit w, Scalar u ~ Scalar w) => u -> w -> u :/ w Source #
heterogeneous division respecting units.
These simply accumulate type information about the units.
It may be necessary to use quantity
operation
to convert to run-time representation after using this, because the result type
accumulates new parts with each use without considering what the total
dimension of the result is. This can produce excessively complicated types, because
the type represents the structure of the expression rather than the structure of
the result.
mapAmount2 :: LiteralUnit a => (Scalar a -> Scalar a -> Scalar a) -> a -> a -> a Source #
asUnit :: (MonadFail m, Show (Scalar u), Show u, LiteralUnit u, Fractional (Scalar u)) => Quantity (Scalar u) -> UnitName u -> m u Source #
quantity :: LiteralUnit u => u -> Quantity (Scalar u) Source #
Converts a compile-time checked dimensional unit to run-time checked version This often has the effect of reducing the complexity in types.
QDivide | |
|
Instances
QProduct | |
|
Instances
newtype Dimensionless Source #
Instances
newtype Information Source #
Instances
newtype SoundLevel Source #
Instances
Instances
Data Angle Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Angle -> c Angle # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Angle # dataTypeOf :: Angle -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Angle) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Angle) # gmapT :: (forall b. Data b => b -> b) -> Angle -> Angle # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Angle -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Angle -> r # gmapQ :: (forall d. Data d => d -> u) -> Angle -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Angle -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Angle -> m Angle # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Angle -> m Angle # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Angle -> m Angle # | |
Generic Angle Source # | |
Num Angle Source # | |
Read Angle Source # | |
Fractional Angle Source # | |
Show Angle Source # | |
Binary Angle Source # | |
NormedSpace Angle Source # | |
VectorSpace Angle Source # | |
LiteralUnit Angle Source # | |
Unit Angle Source # | |
Eq Angle Source # | |
Ord Angle Source # | |
type Rep Angle Source # | |
Defined in Math.Number.Units | |
type Scalar Angle Source # | |
Defined in Math.Number.Units |
fraction_of_circle :: Rational -> Angle Source #
asin_angle :: Double -> Angle Source #
acos_angle :: Double -> Angle Source #
atan_angle :: Double -> Angle Source #
newtype DegreesAngle Source #
Instances
degreesAngle :: DegreesAngle -> Angle Source #
angleDegrees :: Angle -> DegreesAngle Source #
newtype SolidAngle Source #
Instances
newtype Percentage Source #
Instances
newtype Acceleration Source #
Instances
Instances
Data Velocity Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Velocity -> c Velocity # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Velocity # toConstr :: Velocity -> Constr # dataTypeOf :: Velocity -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Velocity) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Velocity) # gmapT :: (forall b. Data b => b -> b) -> Velocity -> Velocity # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Velocity -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Velocity -> r # gmapQ :: (forall d. Data d => d -> u) -> Velocity -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Velocity -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Velocity -> m Velocity # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Velocity -> m Velocity # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Velocity -> m Velocity # | |
Generic Velocity Source # | |
Read Velocity Source # | |
Show Velocity Source # | |
Binary Velocity Source # | |
NormedSpace Velocity Source # | |
VectorSpace Velocity Source # | |
LiteralUnit Velocity Source # | |
Unit Velocity Source # | |
Eq Velocity Source # | |
Ord Velocity Source # | |
Defined in Math.Number.Units | |
type Rep Velocity Source # | |
Defined in Math.Number.Units | |
type Scalar Velocity Source # | |
Defined in Math.Number.Units |
newtype SquareLength Source #
Instances
newtype CubicLength Source #
Instances
sqrt_length :: SquareLength -> Length Source #
square_length :: Length -> SquareLength Source #
times_length :: Length -> Length -> SquareLength Source #
Instances
Data Length Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Length -> c Length # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Length # toConstr :: Length -> Constr # dataTypeOf :: Length -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Length) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Length) # gmapT :: (forall b. Data b => b -> b) -> Length -> Length # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Length -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Length -> r # gmapQ :: (forall d. Data d => d -> u) -> Length -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Length -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Length -> m Length # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Length -> m Length # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Length -> m Length # | |
Generic Length Source # | |
Read Length Source # | |
Show Length Source # | |
Binary Length Source # | |
NormedSpace Length Source # | |
VectorSpace Length Source # | |
LiteralUnit Length Source # | |
Unit Length Source # | |
Eq Length Source # | |
Ord Length Source # | |
type Rep Length Source # | |
Defined in Math.Number.Units | |
type Scalar Length Source # | |
Defined in Math.Number.Units |
Instances
Data Mass Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Mass -> c Mass # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Mass # dataTypeOf :: Mass -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Mass) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Mass) # gmapT :: (forall b. Data b => b -> b) -> Mass -> Mass # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Mass -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Mass -> r # gmapQ :: (forall d. Data d => d -> u) -> Mass -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Mass -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Mass -> m Mass # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Mass -> m Mass # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Mass -> m Mass # | |
Generic Mass Source # | |
Read Mass Source # | |
Show Mass Source # | |
Binary Mass Source # | |
NormedSpace Mass Source # | |
VectorSpace Mass Source # | |
LiteralUnit Mass Source # | |
Unit Mass Source # | |
Eq Mass Source # | |
Ord Mass Source # | |
type Rep Mass Source # | |
Defined in Math.Number.Units | |
type Scalar Mass Source # | |
Defined in Math.Number.Units |
Instances
Data Time Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Time -> c Time # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Time # dataTypeOf :: Time -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Time) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Time) # gmapT :: (forall b. Data b => b -> b) -> Time -> Time # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Time -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Time -> r # gmapQ :: (forall d. Data d => d -> u) -> Time -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Time -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Time -> m Time # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Time -> m Time # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Time -> m Time # | |
Generic Time Source # | |
Read Time Source # | |
Show Time Source # | |
Binary Time Source # | |
NormedSpace Time Source # | |
VectorSpace Time Source # | |
LiteralUnit Time Source # | |
Unit Time Source # | |
Eq Time Source # | |
Ord Time Source # | |
type Rep Time Source # | |
Defined in Math.Number.Units | |
type Scalar Time Source # | |
Defined in Math.Number.Units |
Instances
Data Current Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Current -> c Current # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Current # toConstr :: Current -> Constr # dataTypeOf :: Current -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Current) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Current) # gmapT :: (forall b. Data b => b -> b) -> Current -> Current # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Current -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Current -> r # gmapQ :: (forall d. Data d => d -> u) -> Current -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Current -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Current -> m Current # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Current -> m Current # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Current -> m Current # | |
Generic Current Source # | |
Read Current Source # | |
Show Current Source # | |
Binary Current Source # | |
NormedSpace Current Source # | |
VectorSpace Current Source # | |
LiteralUnit Current Source # | |
Unit Current Source # | |
Eq Current Source # | |
Ord Current Source # | |
type Rep Current Source # | |
Defined in Math.Number.Units | |
type Scalar Current Source # | |
Defined in Math.Number.Units |
newtype DegreesFahrenheit Source #
Instances
newtype DegreesTemperature Source #
Instances
newtype Temperature Source #
Instances
Instances
Data Substance Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Substance -> c Substance # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Substance # toConstr :: Substance -> Constr # dataTypeOf :: Substance -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Substance) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Substance) # gmapT :: (forall b. Data b => b -> b) -> Substance -> Substance # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Substance -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Substance -> r # gmapQ :: (forall d. Data d => d -> u) -> Substance -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Substance -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Substance -> m Substance # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Substance -> m Substance # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Substance -> m Substance # | |
Generic Substance Source # | |
Read Substance Source # | |
Show Substance Source # | |
Binary Substance Source # | |
NormedSpace Substance Source # | |
VectorSpace Substance Source # | |
LiteralUnit Substance Source # | |
Unit Substance Source # | |
Eq Substance Source # | |
Ord Substance Source # | |
Defined in Math.Number.Units | |
type Rep Substance Source # | |
Defined in Math.Number.Units | |
type Scalar Substance Source # | |
Defined in Math.Number.Units |
Instances
Data Intensity Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Intensity -> c Intensity # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Intensity # toConstr :: Intensity -> Constr # dataTypeOf :: Intensity -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Intensity) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Intensity) # gmapT :: (forall b. Data b => b -> b) -> Intensity -> Intensity # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Intensity -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Intensity -> r # gmapQ :: (forall d. Data d => d -> u) -> Intensity -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Intensity -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Intensity -> m Intensity # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Intensity -> m Intensity # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Intensity -> m Intensity # | |
Generic Intensity Source # | |
Read Intensity Source # | |
Show Intensity Source # | |
Binary Intensity Source # | |
NormedSpace Intensity Source # | |
VectorSpace Intensity Source # | |
LiteralUnit Intensity Source # | |
Unit Intensity Source # | |
Eq Intensity Source # | |
Ord Intensity Source # | |
Defined in Math.Number.Units | |
type Rep Intensity Source # | |
Defined in Math.Number.Units | |
type Scalar Intensity Source # | |
Defined in Math.Number.Units |
Instances
Data Frequency Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Frequency -> c Frequency # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Frequency # toConstr :: Frequency -> Constr # dataTypeOf :: Frequency -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Frequency) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Frequency) # gmapT :: (forall b. Data b => b -> b) -> Frequency -> Frequency # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Frequency -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Frequency -> r # gmapQ :: (forall d. Data d => d -> u) -> Frequency -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Frequency -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Frequency -> m Frequency # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Frequency -> m Frequency # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Frequency -> m Frequency # | |
Generic Frequency Source # | |
Read Frequency Source # | |
Show Frequency Source # | |
Binary Frequency Source # | |
NormedSpace Frequency Source # | |
VectorSpace Frequency Source # | |
LiteralUnit Frequency Source # | |
Unit Frequency Source # | |
Eq Frequency Source # | |
Ord Frequency Source # | |
Defined in Math.Number.Units | |
type Rep Frequency Source # | |
Defined in Math.Number.Units | |
type Scalar Frequency Source # | |
Defined in Math.Number.Units |
Instances
Data Force Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Force -> c Force # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Force # dataTypeOf :: Force -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Force) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Force) # gmapT :: (forall b. Data b => b -> b) -> Force -> Force # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Force -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Force -> r # gmapQ :: (forall d. Data d => d -> u) -> Force -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Force -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Force -> m Force # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Force -> m Force # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Force -> m Force # | |
Generic Force Source # | |
Read Force Source # | |
Show Force Source # | |
Binary Force Source # | |
NormedSpace Force Source # | |
VectorSpace Force Source # | |
LiteralUnit Force Source # | |
Unit Force Source # | |
Eq Force Source # | |
Ord Force Source # | |
type Rep Force Source # | |
Defined in Math.Number.Units | |
type Scalar Force Source # | |
Defined in Math.Number.Units |
Instances
Data Torque Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Torque -> c Torque # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Torque # toConstr :: Torque -> Constr # dataTypeOf :: Torque -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Torque) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Torque) # gmapT :: (forall b. Data b => b -> b) -> Torque -> Torque # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Torque -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Torque -> r # gmapQ :: (forall d. Data d => d -> u) -> Torque -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Torque -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Torque -> m Torque # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Torque -> m Torque # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Torque -> m Torque # | |
Generic Torque Source # | |
Read Torque Source # | |
Show Torque Source # | |
Binary Torque Source # | |
NormedSpace Torque Source # | |
VectorSpace Torque Source # | |
LiteralUnit Torque Source # | |
Unit Torque Source # | |
Eq Torque Source # | |
Ord Torque Source # | |
type Rep Torque Source # | |
Defined in Math.Number.Units | |
type Scalar Torque Source # | |
Defined in Math.Number.Units |
Instances
Data Pressure Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Pressure -> c Pressure # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Pressure # toConstr :: Pressure -> Constr # dataTypeOf :: Pressure -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Pressure) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Pressure) # gmapT :: (forall b. Data b => b -> b) -> Pressure -> Pressure # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Pressure -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Pressure -> r # gmapQ :: (forall d. Data d => d -> u) -> Pressure -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Pressure -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Pressure -> m Pressure # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Pressure -> m Pressure # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Pressure -> m Pressure # | |
Generic Pressure Source # | |
Read Pressure Source # | |
Show Pressure Source # | |
Binary Pressure Source # | |
NormedSpace Pressure Source # | |
VectorSpace Pressure Source # | |
LiteralUnit Pressure Source # | |
Unit Pressure Source # | |
Eq Pressure Source # | |
Ord Pressure Source # | |
Defined in Math.Number.Units | |
type Rep Pressure Source # | |
Defined in Math.Number.Units | |
type Scalar Pressure Source # | |
Defined in Math.Number.Units |
Instances
Data Energy Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Energy -> c Energy # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Energy # toConstr :: Energy -> Constr # dataTypeOf :: Energy -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Energy) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Energy) # gmapT :: (forall b. Data b => b -> b) -> Energy -> Energy # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Energy -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Energy -> r # gmapQ :: (forall d. Data d => d -> u) -> Energy -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Energy -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Energy -> m Energy # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Energy -> m Energy # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Energy -> m Energy # | |
Generic Energy Source # | |
Read Energy Source # | |
Show Energy Source # | |
Binary Energy Source # | |
NormedSpace Energy Source # | |
VectorSpace Energy Source # | |
LiteralUnit Energy Source # | |
Unit Energy Source # | |
Eq Energy Source # | |
Ord Energy Source # | |
type Rep Energy Source # | |
Defined in Math.Number.Units | |
type Scalar Energy Source # | |
Defined in Math.Number.Units |
Instances
Data Power Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Power -> c Power # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Power # dataTypeOf :: Power -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Power) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Power) # gmapT :: (forall b. Data b => b -> b) -> Power -> Power # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Power -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Power -> r # gmapQ :: (forall d. Data d => d -> u) -> Power -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Power -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Power -> m Power # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Power -> m Power # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Power -> m Power # | |
Generic Power Source # | |
Read Power Source # | |
Show Power Source # | |
Binary Power Source # | |
NormedSpace Power Source # | |
VectorSpace Power Source # | |
LiteralUnit Power Source # | |
Unit Power Source # | |
Eq Power Source # | |
Ord Power Source # | |
type Rep Power Source # | |
Defined in Math.Number.Units | |
type Scalar Power Source # | |
Defined in Math.Number.Units |
Instances
Data Charge Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Charge -> c Charge # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Charge # toConstr :: Charge -> Constr # dataTypeOf :: Charge -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Charge) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Charge) # gmapT :: (forall b. Data b => b -> b) -> Charge -> Charge # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Charge -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Charge -> r # gmapQ :: (forall d. Data d => d -> u) -> Charge -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Charge -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Charge -> m Charge # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Charge -> m Charge # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Charge -> m Charge # | |
Generic Charge Source # | |
Read Charge Source # | |
Show Charge Source # | |
Binary Charge Source # | |
NormedSpace Charge Source # | |
VectorSpace Charge Source # | |
LiteralUnit Charge Source # | |
Unit Charge Source # | |
Eq Charge Source # | |
Ord Charge Source # | |
type Rep Charge Source # | |
Defined in Math.Number.Units | |
type Scalar Charge Source # | |
Defined in Math.Number.Units |
Instances
Data Voltage Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Voltage -> c Voltage # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Voltage # toConstr :: Voltage -> Constr # dataTypeOf :: Voltage -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Voltage) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Voltage) # gmapT :: (forall b. Data b => b -> b) -> Voltage -> Voltage # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Voltage -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Voltage -> r # gmapQ :: (forall d. Data d => d -> u) -> Voltage -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Voltage -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Voltage -> m Voltage # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Voltage -> m Voltage # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Voltage -> m Voltage # | |
Generic Voltage Source # | |
Read Voltage Source # | |
Show Voltage Source # | |
Binary Voltage Source # | |
NormedSpace Voltage Source # | |
VectorSpace Voltage Source # | |
LiteralUnit Voltage Source # | |
Unit Voltage Source # | |
Eq Voltage Source # | |
Ord Voltage Source # | |
type Rep Voltage Source # | |
Defined in Math.Number.Units | |
type Scalar Voltage Source # | |
Defined in Math.Number.Units |
newtype Capacitance Source #
Instances
newtype Resistance Source #
Instances
newtype Conductance Source #
Instances
Instances
Data Flux Source # | |
Defined in Math.Number.Units gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Flux -> c Flux # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Flux # dataTypeOf :: Flux -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Flux) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Flux) # gmapT :: (forall b. Data b => b -> b) -> Flux -> Flux # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Flux -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Flux -> r # gmapQ :: (forall d. Data d => d -> u) -> Flux -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Flux -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Flux -> m Flux # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Flux -> m Flux # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Flux -> m Flux # | |
Generic Flux Source # | |
Read Flux Source # | |
Show Flux Source # | |
Binary Flux Source # | |
NormedSpace Flux Source # | |
VectorSpace Flux Source # | |
LiteralUnit Flux Source # | |
Unit Flux Source # | |
Eq Flux Source # | |
Ord Flux Source # | |
type Rep Flux Source # | |
Defined in Math.Number.Units | |
type Scalar Flux Source # | |
Defined in Math.Number.Units |
newtype FluxDensity Source #
Instances
newtype Inductance Source #
Instances
newtype LuminousFlux Source #
Instances
newtype Illuminance Source #
Instances
newtype Radioactivity Source #
Instances
newtype AbsorbedDose Source #
Instances
newtype EquivalentDose Source #
Instances
newtype CatalyticActivity Source #