Copyright | (c) Alice Rixte 2025 |
---|---|
License | BSD 3 |
Maintainer | alice.rixte@u-bordeaux.fr |
Stability | unstable |
Portability | non-portable (GHC extensions) |
Safe Haskell | None |
Language | Haskell2010 |
Data.Units.Base.System
Description
Describe a system of units and their dimensions.
Synopsis
- type Dim = Type -> Type
- type family DimId (d :: Dim) :: ZZ
- class (IsUnit (DimToUnit d), forall a. Coercible (d a) a) => IsDim (d :: Dim) where
- class ShowDim (d :: Dim) where
- type ShowDimType (d :: Dim) :: ErrorMessage
- showsDimPrec :: Int -> ShowS
- showDim :: String
- prettysDimPrec :: Int -> ShowS
- prettyDim :: String
- prettysDim :: forall (d :: Dim). ShowDim d => ShowS
- showsDim :: forall (d :: Dim). ShowDim d => ShowS
- showDimOf :: (IsUnit u, ShowDim (DimOf u)) => u a -> String
- prettyDimOf :: (IsUnit u, ShowDim (DimOf u)) => u a -> String
- putDimOf :: (IsUnit u, ShowDim (DimOf u)) => u a -> IO ()
- type NormalizeDim (d :: Type -> Type) = NormalizeFlatDim (Flatten d)
- type Unit = Type -> Type
- class IsUnit u => ShowUnit (u :: Unit) where
- type ShowUnitType (u :: Unit) :: ErrorMessage
- showsUnitPrec :: Int -> ShowS
- showUnit :: String
- prettysUnitPrec :: Int -> ShowS
- prettyUnit :: String
- prettysUnit :: forall (u :: Unit). ShowUnit u => ShowS
- showsUnit :: forall (u :: Unit). ShowUnit u => ShowS
- prettyUnitInfo :: forall (u :: Unit) (du :: Dim) (nu :: Unit). (du ~ DimOf u, nu ~ BaseUnitOf u, ShowUnit u, ShowDim du, ShowUnit nu) => String
- putInfoU :: forall (u :: Unit) (du :: Dim) (nu :: Unit). (du ~ DimOf u, nu ~ BaseUnitOf u, ShowUnit u, ShowDim du, ShowUnit nu) => IO ()
- class (forall a. Coercible (u a) a) => IsUnit (u :: Unit) where
- quantity :: IsUnit u => a -> u a
- unQuantity :: IsUnit u => u a -> a
- showQuantity :: (ShowUnit u, Show a) => u a -> String
- prettyQuantity :: (ShowUnit u, Show a) => u a -> String
- putQuantity :: (Show a, ShowUnit u) => u a -> IO ()
- putInfoQ :: (ShowUnit u, ShowDim (DimOf u), ShowUnit (BaseUnitOf u), Show a) => u a -> IO ()
- newtype NoDim a = NoDim a
- newtype NoUnit a = NoUnit a
- newtype MetaUnit (u :: Unit) a = MetaUnit a
- newtype ((u :: Unit) .*. (v :: Unit)) a = MulUnit a
- newtype ((u :: Unit) .^. (n :: ZZ)) a = PowUnit a
- type (.^+) (a :: Unit) (b :: Nat) = a .^. 'Pos b
- type (.^-) (a :: Unit) (b :: Nat) = a .^. 'Neg b
- type BaseUnitOf (u :: Unit) = DimToUnit (DimOf u)
- type NormalizeUnitL (u :: Type -> Type) = NormalizeFlatUnitL (Flatten u)
- type NormalizeUnitR (u :: Type -> Type) = NormalizeFlatUnitR (Flatten u)
- type (.*~) (u :: Unit) (v :: Unit) = NormalizeUnitL (u .*. v)
- type (~*.) (u :: Unit) (v :: Unit) = NormalizeUnitR (u .*. v)
- type (~*~) (u :: Unit) (v :: Unit) = BaseUnitOf (u .*. v)
- type family (u :: Unit) ./. (v :: Unit) :: Unit where ...
- type (./~) (u :: Unit) (v :: Unit) = NormalizeUnitL (u ./. v)
- type (~/.) (u :: Unit) (v :: Unit) = NormalizeUnitR (u ./. v)
- type (~/~) (u :: Unit) (v :: Unit) = BaseUnitOf (u ./. v)
- type (~^.) (u :: Unit) (n :: ZZ) = NormalizeUnitR (u .^. n)
- type (.^~) (u :: Unit) (n :: ZZ) = NormalizeUnitL (u .^. n)
- type (~^~) (u :: Unit) (n :: ZZ) = BaseUnitOf (u .^. n)
Dimensions
type family DimId (d :: Dim) :: ZZ Source #
A dimension identifier.
This identifiers allow to sort the units when computing the standard unit.
>>>
type instance DimId Length = 300
>>>
:kind! BaseUnitOf (Second .^- 1 .*. Meter)
Meter .*. (Second .^. Neg 1)
Two different dimensions must have different identifiers. To make sure this remains true, we maintain here an exhaustive list of dimensions declared in this package and any package that depends on it. Please raise an issue if you added a new dimension.
- This package:
Dimension | Id |
---|---|
Reserved | 0 |
| 1 |
| 1000 |
| 2000 |
| 3000 |
| 4000 |
| 5000 |
| 6000 |
| 7000 |
| 8000 |
Instances
type DimId Angle Source # | |
Defined in Data.Units.AngleSI.System | |
type DimId NoDim Source # | |
Defined in Data.Units.Base.System | |
type DimId AmountOfSubstance Source # | |
Defined in Data.Units.SI.System | |
type DimId Current Source # | |
Defined in Data.Units.SI.System | |
type DimId Length Source # | |
Defined in Data.Units.SI.System | |
type DimId LuminousIntensity Source # | |
Defined in Data.Units.SI.System | |
type DimId Mass Source # | |
Defined in Data.Units.SI.System | |
type DimId Temperature Source # | |
Defined in Data.Units.SI.System | |
type DimId Time Source # | |
Defined in Data.Units.SI.System | |
type DimId (d .^. n) Source # | |
Defined in Data.Units.Base.System |
class (IsUnit (DimToUnit d), forall a. Coercible (d a) a) => IsDim (d :: Dim) Source #
Instances
IsDim Angle Source # | |||||
Defined in Data.Units.AngleSI.System | |||||
IsDim NoDim Source # | |||||
Defined in Data.Units.Base.System | |||||
IsDim AmountOfSubstance Source # | |||||
Defined in Data.Units.SI.System Associated Types
| |||||
IsDim Current Source # | |||||
Defined in Data.Units.SI.System | |||||
IsDim Length Source # | |||||
Defined in Data.Units.SI.System | |||||
IsDim LuminousIntensity Source # | |||||
Defined in Data.Units.SI.System Associated Types
| |||||
IsDim Mass Source # | |||||
Defined in Data.Units.SI.System | |||||
IsDim Temperature Source # | |||||
Defined in Data.Units.SI.System Associated Types
| |||||
IsDim Time Source # | |||||
Defined in Data.Units.SI.System | |||||
(IsDim d, IsDim e) => IsDim (d .*. e) Source # | |||||
Defined in Data.Units.Base.System | |||||
IsDim d => IsDim (d .^. n) Source # | |||||
Defined in Data.Units.Base.System |
class ShowDim (d :: Dim) where Source #
Dimensions that can be shown as a string, or as a type error message.
Minimal complete definition
Associated Types
type ShowDimType (d :: Dim) :: ErrorMessage Source #
Allows to print dimensions in conversion error messages
>>>
type ShowDimType Length = "L"
Methods
showsDimPrec :: Int -> ShowS Source #
Convert a dimension to a readable string
should satisfy the law :showsDimPrec
showsDimPrec d x r ++ s == showsPrec d x (r ++ s)
Convert a dimension to a string representing its type.
>>>
showDim @(Length ./. Time)
"Length .*. Time.^-1"
prettysDimPrec :: Int -> ShowS Source #
Same as
but for pretty printing.showsDimPrec
should satisfy the law :prettysDimPrec
prettysDimPrec d x r ++ s == prettysPrec d x (r ++ s)
Same as
but for pretty printingshowDim
>>>
putStrLn $ prettyDim @(Kilo Meter ./. Second)
km.s⁻¹
Instances
prettysDim :: forall (d :: Dim). ShowDim d => ShowS Source #
Equivalent to prettysDimPrec
with a precedence of 0.
showsDim :: forall (d :: Dim). ShowDim d => ShowS Source #
Equivalent to showsDimPrec
with a precedence of 0.
showDimOf :: (IsUnit u, ShowDim (DimOf u)) => u a -> String Source #
Show the dimension of a quantity.
>>>
showDimOf (quantity @(Kilo Meter ./. Second) 1)
"Length .*. Time.^-1"
prettyDimOf :: (IsUnit u, ShowDim (DimOf u)) => u a -> String Source #
Same as showDimOf
but for pretty printing.
>>> putStrLn $ prettyDimOf (quantity @(Kilo Meter ./. Second) 1)
L.T⁻¹
putDimOf :: (IsUnit u, ShowDim (DimOf u)) => u a -> IO () Source #
Print the dimension of a quantity.
>>>
putDimOf (quantity @(Kilo Meter ./. Second) 1)
L.T⁻¹
type NormalizeDim (d :: Type -> Type) = NormalizeFlatDim (Flatten d) Source #
Units
type Unit = Type -> Type Source #
A unit is represented by a newtype constructor. A quantity of some unit
u
is of type u a
.
class IsUnit u => ShowUnit (u :: Unit) where Source #
Units that can be shown as a string, or as a type error message.
Minimal complete definition
Associated Types
type ShowUnitType (u :: Unit) :: ErrorMessage Source #
Allows to print units in conversion error messages
>>>
type ShowUnit Meter = "m"
Methods
showsUnitPrec :: Int -> ShowS Source #
Convert a unit to a readable string
should satisfy the law :showsUnitPrec
showsUnitPrec d x r ++ s == showsPrec d x (r ++ s)
Convert a unit to a string representing its type.
>>>
showUnit @(Kilo Meter ./. Second)
"Kilo Meter .*. Second.^-1"
prettysUnitPrec :: Int -> ShowS Source #
Same as
but for pretty printing.showsUnitPrec
prettyUnit :: String Source #
Same as
but for pretty printingshowUnit
>>>
putStrLn $ prettyUnit @(Kilo Meter ./. Second)
km.s⁻¹
Instances
ShowUnit Lumen Source # | |||||
Defined in Data.Units.AngleSI.Derived Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Lux Source # | |||||
Defined in Data.Units.AngleSI.Derived Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Steradian Source # | |||||
Defined in Data.Units.AngleSI.Derived Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Degree Source # | |||||
Defined in Data.Units.AngleSI.NonStd.Angle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Gradian Source # | |||||
Defined in Data.Units.AngleSI.NonStd.Angle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Turn Source # | |||||
Defined in Data.Units.AngleSI.NonStd.Angle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Radian Source # | |||||
Defined in Data.Units.AngleSI.System Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Fahrenheit Source # | |||||
Defined in Data.Units.NonStd.Temperature Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Hour Source # | |||||
Defined in Data.Units.NonStd.Time Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Minute Source # | |||||
Defined in Data.Units.NonStd.Time Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Lumen Source # | |||||
Defined in Data.Units.SI.Derived.Angle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Lux Source # | |||||
Defined in Data.Units.SI.Derived.Angle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Radian Source # | |||||
Defined in Data.Units.SI.Derived.Angle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Steradian Source # | |||||
Defined in Data.Units.SI.Derived.Angle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Becquerel Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Celsius Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Coulomb Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Farad Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Gray Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Henry Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Hertz Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Joule Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Katal Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Newton Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Ohm Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Pascal Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Siemens Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Sievert Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Tesla Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Volt Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Watt Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Weber Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Degree Source # | |||||
Defined in Data.Units.SI.NonStd.Angle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Gradian Source # | |||||
Defined in Data.Units.SI.NonStd.Angle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Turn Source # | |||||
Defined in Data.Units.SI.NonStd.Angle Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Ampere Source # | |||||
Defined in Data.Units.SI.System Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Candela Source # | |||||
Defined in Data.Units.SI.System Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Gram Source # | |||||
Defined in Data.Units.SI.System Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Kelvin Source # | |||||
Defined in Data.Units.SI.System Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Meter Source # | |||||
Defined in Data.Units.SI.System Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Mole Source # | |||||
Defined in Data.Units.SI.System Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit Second Source # | |||||
Defined in Data.Units.SI.System Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (MetaUnit u) Source # | |||||
Defined in Data.Units.Base.System Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Atto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Centi u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Deca u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Deci u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Exa u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Femto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Giga u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Hecto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Kilo u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Mega u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Micro u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Milli u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Nano u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Peta u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Pico u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Quecca u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Quecto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Ronna u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Ronto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Tera u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Yocto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Yotta u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Zepto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
ShowUnit u => ShowUnit (Zetta u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
(ShowPrefix p, ShowUnit u) => ShowUnit (MetaPrefix p u) Source # | |||||
Defined in Data.Units.Base.Prefix Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
(ShowUnit u, ShowUnit v) => ShowUnit (u .*. v) Source # | |||||
Defined in Data.Units.Base.System Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
(ShowUnit u, KnownInt n) => ShowUnit (u .^. n) Source # | |||||
Defined in Data.Units.Base.System Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
(KnownNat b, KnownInt offs) => ShowUnit (Tet b offs) Source # | |||||
Defined in Data.Units.NonStd.Frequency Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # |
prettysUnit :: forall (u :: Unit). ShowUnit u => ShowS Source #
Equivalent to prettysUnitPrec
with a precedence of 0.
showsUnit :: forall (u :: Unit). ShowUnit u => ShowS Source #
Equivalent to showsUnitPrec
with a precedence of 0.
prettyUnitInfo :: forall (u :: Unit) (du :: Dim) (nu :: Unit). (du ~ DimOf u, nu ~ BaseUnitOf u, ShowUnit u, ShowDim du, ShowUnit nu) => String Source #
Pretty print information about a unit, its dimension and its normalized form.
putInfoU :: forall (u :: Unit) (du :: Dim) (nu :: Unit). (du ~ DimOf u, nu ~ BaseUnitOf u, ShowUnit u, ShowDim du, ShowUnit nu) => IO () Source #
Print information about a unit, its dimension and its normalized form.
>>>
putInfoU @Newton
Unit: Newton abbr: N Dimension: Mass .*. Length .*. Time.^-2 abbr: M⋅L⋅T⁻² Normalized: Kilo Gram .*. Meter .*. Second.^-2 abbr: kg⋅m⋅s⁻²
class (forall a. Coercible (u a) a) => IsUnit (u :: Unit) Source #
Any unit must have a dimension. Additionally, a unit is a newtype
constructor : a quantity u a
can always be coerced to its magnitude a
.
Instances
IsUnit Lumen Source # | |||||
Defined in Data.Units.AngleSI.Derived Associated Types
| |||||
IsUnit Lux Source # | |||||
Defined in Data.Units.AngleSI.Derived Associated Types
| |||||
IsUnit Steradian Source # | |||||
Defined in Data.Units.AngleSI.Derived Associated Types
| |||||
IsUnit Degree Source # | |||||
Defined in Data.Units.AngleSI.NonStd.Angle | |||||
IsUnit Gradian Source # | |||||
Defined in Data.Units.AngleSI.NonStd.Angle | |||||
IsUnit Turn Source # | |||||
Defined in Data.Units.AngleSI.NonStd.Angle | |||||
IsUnit Radian Source # | |||||
Defined in Data.Units.AngleSI.System | |||||
IsUnit NoUnit Source # | |||||
Defined in Data.Units.Base.System | |||||
IsUnit Fahrenheit Source # | |||||
Defined in Data.Units.NonStd.Temperature Associated Types
| |||||
IsUnit Hour Source # | |||||
Defined in Data.Units.NonStd.Time | |||||
IsUnit Minute Source # | |||||
Defined in Data.Units.NonStd.Time | |||||
IsUnit Lumen Source # | |||||
Defined in Data.Units.SI.Derived.Angle Associated Types
| |||||
IsUnit Lux Source # | |||||
Defined in Data.Units.SI.Derived.Angle Associated Types
| |||||
IsUnit Radian Source # | |||||
Defined in Data.Units.SI.Derived.Angle | |||||
IsUnit Steradian Source # | |||||
Defined in Data.Units.SI.Derived.Angle Associated Types
| |||||
IsUnit Becquerel Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
IsUnit Celsius Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
IsUnit Coulomb Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
IsUnit Farad Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
IsUnit Gray Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
IsUnit Henry Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
IsUnit Hertz Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle | |||||
IsUnit Joule Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle | |||||
IsUnit Katal Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
IsUnit Newton Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle | |||||
IsUnit Ohm Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
IsUnit Pascal Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle | |||||
IsUnit Siemens Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
IsUnit Sievert Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
IsUnit Tesla Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
IsUnit Volt Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle | |||||
IsUnit Watt Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle | |||||
IsUnit Weber Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
IsUnit Degree Source # | |||||
Defined in Data.Units.SI.NonStd.Angle | |||||
IsUnit Gradian Source # | |||||
Defined in Data.Units.SI.NonStd.Angle | |||||
IsUnit Turn Source # | |||||
Defined in Data.Units.SI.NonStd.Angle | |||||
IsUnit Ampere Source # | |||||
Defined in Data.Units.SI.System | |||||
IsUnit Candela Source # | |||||
Defined in Data.Units.SI.System Associated Types
| |||||
IsUnit Gram Source # | |||||
Defined in Data.Units.SI.System | |||||
IsUnit Kelvin Source # | |||||
Defined in Data.Units.SI.System Associated Types
| |||||
IsUnit Meter Source # | |||||
Defined in Data.Units.SI.System | |||||
IsUnit Mole Source # | |||||
Defined in Data.Units.SI.System Associated Types
| |||||
IsUnit Second Source # | |||||
Defined in Data.Units.SI.System | |||||
IsUnit u => IsUnit (MetaUnit u) Source # | |||||
Defined in Data.Units.Base.System | |||||
IsUnit u => IsUnit (Atto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Centi u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Deca u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Deci u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Exa u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Femto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Giga u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Hecto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Kilo u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Mega u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Micro u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Milli u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Nano u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Peta u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Pico u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Quecca u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Quecto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Ronna u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Ronto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Tera u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Yocto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Yotta u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Zepto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
IsUnit u => IsUnit (Zetta u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
(IsPrefix p, IsUnit u) => IsUnit (MetaPrefix p u) Source # | |||||
Defined in Data.Units.Base.Prefix Associated Types
| |||||
(IsUnit u, IsUnit v) => IsUnit (u .*. v) Source # | |||||
Defined in Data.Units.Base.System Associated Types
| |||||
IsUnit u => IsUnit (u .^. n) Source # | |||||
Defined in Data.Units.Base.System Associated Types
| |||||
IsUnit (Tet b offs) Source # | |||||
Defined in Data.Units.NonStd.Frequency |
Quantity
quantity :: IsUnit u => a -> u a Source #
Make a quantity out of any numerical value (called the magnitude of that quantity)
>>>
quantity @(Meter ./. Second) 1
quantity @(Meter .*. Second .^- 1) 1
unQuantity :: IsUnit u => u a -> a Source #
Get the magnitude of a quantity.
unQuantity (quantity
u a) === a @
showQuantity :: (ShowUnit u, Show a) => u a -> String Source #
Same as showUnit
but for quantities
>>>
showQuantity (quantity @(Kilo Meter ./. Second) 1)
"quantity @(Kilo Meter .*. Second.^-1) 1.0"
prettyQuantity :: (ShowUnit u, Show a) => u a -> String Source #
Same as prettyUnit
but for quantities
>>>
putStrLn $ prettyQuantity (quantity @(Kilo Meter ./. Second) 1)
1 km.s⁻¹
putQuantity :: (Show a, ShowUnit u) => u a -> IO () Source #
Pretty print a quantity.
>>>
putQuantity (quantity @(Kilo Meter ./. Second) 1)
1 km.s⁻¹
putInfoQ :: (ShowUnit u, ShowDim (DimOf u), ShowUnit (BaseUnitOf u), Show a) => u a -> IO () Source #
Same as putInfoU
but for quantities.
>>>
putInfoQ (Newton 4)
Unit: Newton abbr: N Dimension: Mass .*. Length .*. Time.^-2 abbr: M⋅L⋅T⁻² Normalized: Kilo Gram .*. Meter .*. Second.^-2 abbr: kg⋅m⋅s⁻² Magnitude: 4
Unit and dimension constructors
The dimension of non dimensional quantities
Constructors
NoDim a |
Instances
Functor NoDim Source # | |||||
IsDim NoDim Source # | |||||
Defined in Data.Units.Base.System | |||||
ShowDim NoDim Source # | |||||
Defined in Data.Units.Base.System Associated Types
| |||||
Monoid a => Monoid (NoDim a) Source # | |||||
Semigroup a => Semigroup (NoDim a) Source # | |||||
Bounded a => Bounded (NoDim a) Source # | |||||
Defined in Data.Units.Base.System | |||||
Enum a => Enum (NoDim a) Source # | |||||
Defined in Data.Units.Base.System | |||||
Floating a => Floating (NoDim a) Source # | |||||
RealFloat a => RealFloat (NoDim a) Source # | |||||
Defined in Data.Units.Base.System Methods floatRadix :: NoDim a -> Integer floatDigits :: NoDim a -> Int floatRange :: NoDim a -> (Int, Int) decodeFloat :: NoDim a -> (Integer, Int) encodeFloat :: Integer -> Int -> NoDim a significand :: NoDim a -> NoDim a scaleFloat :: Int -> NoDim a -> NoDim a isInfinite :: NoDim a -> Bool isDenormalized :: NoDim a -> Bool isNegativeZero :: NoDim a -> Bool | |||||
Num a => Num (NoDim a) Source # | |||||
Fractional a => Fractional (NoDim a) Source # | |||||
Defined in Data.Units.Base.System | |||||
Real a => Real (NoDim a) Source # | |||||
Defined in Data.Units.Base.System Methods toRational :: NoDim a -> Rational | |||||
RealFrac a => RealFrac (NoDim a) Source # | |||||
Show a => Show (NoDim a) Source # | |||||
Eq a => Eq (NoDim a) Source # | |||||
Ord a => Ord (NoDim a) Source # | |||||
type DimId NoDim Source # | |||||
Defined in Data.Units.Base.System | |||||
type DimToUnit NoDim Source # | |||||
Defined in Data.Units.Base.System | |||||
type ShowDimType NoDim Source # | |||||
Defined in Data.Units.Base.System |
A unit that has no dimension.
type MyHertz = NoUnit ./. Second
Constructors
NoUnit a |
Instances
Functor NoUnit Source # | |
IsUnit NoUnit Source # | |
Defined in Data.Units.Base.System | |
Fractional a => ConversionFactor NoUnit a Source # | |
Defined in Data.Units.Base.Convert | |
Fractional a => ConvertibleUnit NoUnit a Source # | |
Defined in Data.Units.Base.Convert Methods toBaseUnit :: NoUnit a -> BaseUnitOf NoUnit a Source # fromBaseUnit :: BaseUnitOf NoUnit a -> NoUnit a Source # | |
Floating a => Floating (NoUnit a) Source # | |
RealFloat a => RealFloat (NoUnit a) Source # | |
Defined in Data.Units.Base.System Methods floatRadix :: NoUnit a -> Integer floatDigits :: NoUnit a -> Int floatRange :: NoUnit a -> (Int, Int) decodeFloat :: NoUnit a -> (Integer, Int) encodeFloat :: Integer -> Int -> NoUnit a significand :: NoUnit a -> NoUnit a scaleFloat :: Int -> NoUnit a -> NoUnit a isInfinite :: NoUnit a -> Bool isDenormalized :: NoUnit a -> Bool isNegativeZero :: NoUnit a -> Bool | |
Num a => Num (NoUnit a) Source # | |
Fractional a => Fractional (NoUnit a) Source # | |
Defined in Data.Units.Base.System | |
Real a => Real (NoUnit a) Source # | |
Defined in Data.Units.Base.System Methods toRational :: NoUnit a -> Rational | |
RealFrac a => RealFrac (NoUnit a) Source # | |
Show a => Show (NoUnit a) Source # | |
Eq a => Eq (NoUnit a) Source # | |
Ord a => Ord (NoUnit a) Source # | |
Defined in Data.Units.Base.System | |
type DimOf NoUnit Source # | |
Defined in Data.Units.Base.System |
newtype MetaUnit (u :: Unit) a Source #
A unit that can represent any unit.
This can be used with the `deriving via` mechanism to derive some of the unit instances.
Constructors
MetaUnit a |
Instances
Functor (MetaUnit u) Source # | |||||
IsUnit u => IsUnit (MetaUnit u) Source # | |||||
Defined in Data.Units.Base.System | |||||
ShowUnit u => ShowUnit (MetaUnit u) Source # | |||||
Defined in Data.Units.Base.System Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
Monoid a => Monoid (MetaUnit u a) Source # | |||||
Semigroup a => Semigroup (MetaUnit u a) Source # | |||||
Bounded a => Bounded (MetaUnit u a) Source # | |||||
Defined in Data.Units.Base.System | |||||
Enum a => Enum (MetaUnit u a) Source # | |||||
Defined in Data.Units.Base.System Methods succ :: MetaUnit u a -> MetaUnit u a pred :: MetaUnit u a -> MetaUnit u a fromEnum :: MetaUnit u a -> Int enumFrom :: MetaUnit u a -> [MetaUnit u a] enumFromThen :: MetaUnit u a -> MetaUnit u a -> [MetaUnit u a] enumFromTo :: MetaUnit u a -> MetaUnit u a -> [MetaUnit u a] enumFromThenTo :: MetaUnit u a -> MetaUnit u a -> MetaUnit u a -> [MetaUnit u a] | |||||
Floating a => Floating (MetaUnit u a) Source # | |||||
Defined in Data.Units.Base.System Methods exp :: MetaUnit u a -> MetaUnit u a log :: MetaUnit u a -> MetaUnit u a sqrt :: MetaUnit u a -> MetaUnit u a (**) :: MetaUnit u a -> MetaUnit u a -> MetaUnit u a logBase :: MetaUnit u a -> MetaUnit u a -> MetaUnit u a sin :: MetaUnit u a -> MetaUnit u a cos :: MetaUnit u a -> MetaUnit u a tan :: MetaUnit u a -> MetaUnit u a asin :: MetaUnit u a -> MetaUnit u a acos :: MetaUnit u a -> MetaUnit u a atan :: MetaUnit u a -> MetaUnit u a sinh :: MetaUnit u a -> MetaUnit u a cosh :: MetaUnit u a -> MetaUnit u a tanh :: MetaUnit u a -> MetaUnit u a asinh :: MetaUnit u a -> MetaUnit u a acosh :: MetaUnit u a -> MetaUnit u a atanh :: MetaUnit u a -> MetaUnit u a log1p :: MetaUnit u a -> MetaUnit u a expm1 :: MetaUnit u a -> MetaUnit u a | |||||
RealFloat a => RealFloat (MetaUnit u a) Source # | |||||
Defined in Data.Units.Base.System Methods floatRadix :: MetaUnit u a -> Integer floatDigits :: MetaUnit u a -> Int floatRange :: MetaUnit u a -> (Int, Int) decodeFloat :: MetaUnit u a -> (Integer, Int) encodeFloat :: Integer -> Int -> MetaUnit u a exponent :: MetaUnit u a -> Int significand :: MetaUnit u a -> MetaUnit u a scaleFloat :: Int -> MetaUnit u a -> MetaUnit u a isInfinite :: MetaUnit u a -> Bool isDenormalized :: MetaUnit u a -> Bool isNegativeZero :: MetaUnit u a -> Bool | |||||
Num a => Num (MetaUnit u a) Source # | |||||
Defined in Data.Units.Base.System Methods (+) :: MetaUnit u a -> MetaUnit u a -> MetaUnit u a (-) :: MetaUnit u a -> MetaUnit u a -> MetaUnit u a (*) :: MetaUnit u a -> MetaUnit u a -> MetaUnit u a negate :: MetaUnit u a -> MetaUnit u a abs :: MetaUnit u a -> MetaUnit u a signum :: MetaUnit u a -> MetaUnit u a fromInteger :: Integer -> MetaUnit u a | |||||
Fractional a => Fractional (MetaUnit u a) Source # | |||||
Defined in Data.Units.Base.System | |||||
Real a => Real (MetaUnit u a) Source # | |||||
Defined in Data.Units.Base.System Methods toRational :: MetaUnit u a -> Rational | |||||
RealFrac a => RealFrac (MetaUnit u a) Source # | |||||
(Show a, ShowUnit u) => Show (MetaUnit u a) Source # | |||||
Eq a => Eq (MetaUnit u a) Source # | |||||
Ord a => Ord (MetaUnit u a) Source # | |||||
Defined in Data.Units.Base.System | |||||
type DimOf (MetaUnit u) Source # | |||||
Defined in Data.Units.Base.System | |||||
type ShowUnitType (MetaUnit u) Source # | |||||
Defined in Data.Units.Base.System |
newtype ((u :: Unit) .*. (v :: Unit)) a infixr 7 Source #
Multiplication of two units.
type MyForceMoment = Newton .*. Meter
Constructors
MulUnit a |
Instances
Functor (u .*. v) Source # | |||||
(IsDim d, IsDim e) => IsDim (d .*. e) Source # | |||||
Defined in Data.Units.Base.System | |||||
(IsUnit u, IsUnit v) => IsUnit (u .*. v) Source # | |||||
Defined in Data.Units.Base.System Associated Types
| |||||
(ShowDim u, ShowDim v) => ShowDim (u .*. v) Source # | |||||
Defined in Data.Units.Base.System Associated Types
| |||||
(ShowUnit u, ShowUnit v) => ShowUnit (u .*. v) Source # | |||||
Defined in Data.Units.Base.System Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
(Num a, ConversionFactor u a, ConversionFactor v a, IsUnit (BaseUnitOf (u .*. v))) => ConversionFactor (u .*. v) a Source # | |||||
Defined in Data.Units.Base.Convert | |||||
(Num a, ConversionFactor u a, ConversionFactor v a, IsUnit (BaseUnitOf (u .*. v))) => ConvertibleUnit (u .*. v) a Source # | |||||
Defined in Data.Units.Base.Convert Methods toBaseUnit :: (u .*. v) a -> BaseUnitOf (u .*. v) a Source # fromBaseUnit :: BaseUnitOf (u .*. v) a -> (u .*. v) a Source # | |||||
Floating a => Floating ((u .*. v) a) Source # | |||||
Defined in Data.Units.Base.System Methods exp :: (u .*. v) a -> (u .*. v) a log :: (u .*. v) a -> (u .*. v) a sqrt :: (u .*. v) a -> (u .*. v) a (**) :: (u .*. v) a -> (u .*. v) a -> (u .*. v) a logBase :: (u .*. v) a -> (u .*. v) a -> (u .*. v) a sin :: (u .*. v) a -> (u .*. v) a cos :: (u .*. v) a -> (u .*. v) a tan :: (u .*. v) a -> (u .*. v) a asin :: (u .*. v) a -> (u .*. v) a acos :: (u .*. v) a -> (u .*. v) a atan :: (u .*. v) a -> (u .*. v) a sinh :: (u .*. v) a -> (u .*. v) a cosh :: (u .*. v) a -> (u .*. v) a tanh :: (u .*. v) a -> (u .*. v) a asinh :: (u .*. v) a -> (u .*. v) a acosh :: (u .*. v) a -> (u .*. v) a atanh :: (u .*. v) a -> (u .*. v) a log1p :: (u .*. v) a -> (u .*. v) a expm1 :: (u .*. v) a -> (u .*. v) a | |||||
RealFloat a => RealFloat ((u .*. v) a) Source # | |||||
Defined in Data.Units.Base.System Methods floatRadix :: (u .*. v) a -> Integer floatDigits :: (u .*. v) a -> Int floatRange :: (u .*. v) a -> (Int, Int) decodeFloat :: (u .*. v) a -> (Integer, Int) encodeFloat :: Integer -> Int -> (u .*. v) a exponent :: (u .*. v) a -> Int significand :: (u .*. v) a -> (u .*. v) a scaleFloat :: Int -> (u .*. v) a -> (u .*. v) a isInfinite :: (u .*. v) a -> Bool isDenormalized :: (u .*. v) a -> Bool isNegativeZero :: (u .*. v) a -> Bool | |||||
Num a => Num ((u .*. v) a) Source # | |||||
Defined in Data.Units.Base.System | |||||
Fractional a => Fractional ((u .*. v) a) Source # | |||||
Defined in Data.Units.Base.System | |||||
Real a => Real ((u .*. v) a) Source # | |||||
Defined in Data.Units.Base.System Methods toRational :: (u .*. v) a -> Rational | |||||
RealFrac a => RealFrac ((u .*. v) a) Source # | |||||
(Show a, ShowUnit u, ShowUnit v) => Show ((u .*. v) a) Source # | |||||
Eq a => Eq ((u .*. v) a) Source # | |||||
Ord a => Ord ((u .*. v) a) Source # | |||||
Defined in Data.Units.Base.System | |||||
type DimOf (u .*. v) Source # | |||||
Defined in Data.Units.Base.System | |||||
type DimToUnit (d .*. e) Source # | |||||
type ShowDimType (u .*. v) Source # | |||||
Defined in Data.Units.Base.System | |||||
type ShowUnitType (u .*. v) Source # | |||||
Defined in Data.Units.Base.System |
newtype ((u :: Unit) .^. (n :: ZZ)) a infix 8 Source #
Exponentiation of a unit
type Acceleration = Meter .*. Second .^. Neg 2
Constructors
PowUnit a |
Instances
Functor (u .^. n) Source # | |||||
IsDim d => IsDim (d .^. n) Source # | |||||
Defined in Data.Units.Base.System | |||||
IsUnit u => IsUnit (u .^. n) Source # | |||||
Defined in Data.Units.Base.System Associated Types
| |||||
(ShowDim u, KnownInt n) => ShowDim (u .^. n) Source # | |||||
Defined in Data.Units.Base.System Associated Types
| |||||
(ShowUnit u, KnownInt n) => ShowUnit (u .^. n) Source # | |||||
Defined in Data.Units.Base.System Associated Types
Methods showsUnitPrec :: Int -> ShowS Source # prettysUnitPrec :: Int -> ShowS Source # prettyUnit :: String Source # | |||||
(ConversionFactor u a, IsUnit (BaseUnitOf (u .^. n)), KnownInt n) => ConversionFactor (u .^. n) a Source # | |||||
Defined in Data.Units.Base.Convert | |||||
(ConversionFactor u a, IsUnit (BaseUnitOf (u .^. n)), KnownInt n) => ConvertibleUnit (u .^. n) a Source # | |||||
Defined in Data.Units.Base.Convert Methods toBaseUnit :: (u .^. n) a -> BaseUnitOf (u .^. n) a Source # fromBaseUnit :: BaseUnitOf (u .^. n) a -> (u .^. n) a Source # | |||||
Floating a => Floating ((u .^. n) a) Source # | |||||
Defined in Data.Units.Base.System Methods exp :: (u .^. n) a -> (u .^. n) a log :: (u .^. n) a -> (u .^. n) a sqrt :: (u .^. n) a -> (u .^. n) a (**) :: (u .^. n) a -> (u .^. n) a -> (u .^. n) a logBase :: (u .^. n) a -> (u .^. n) a -> (u .^. n) a sin :: (u .^. n) a -> (u .^. n) a cos :: (u .^. n) a -> (u .^. n) a tan :: (u .^. n) a -> (u .^. n) a asin :: (u .^. n) a -> (u .^. n) a acos :: (u .^. n) a -> (u .^. n) a atan :: (u .^. n) a -> (u .^. n) a sinh :: (u .^. n) a -> (u .^. n) a cosh :: (u .^. n) a -> (u .^. n) a tanh :: (u .^. n) a -> (u .^. n) a asinh :: (u .^. n) a -> (u .^. n) a acosh :: (u .^. n) a -> (u .^. n) a atanh :: (u .^. n) a -> (u .^. n) a log1p :: (u .^. n) a -> (u .^. n) a expm1 :: (u .^. n) a -> (u .^. n) a | |||||
RealFloat a => RealFloat ((u .^. n) a) Source # | |||||
Defined in Data.Units.Base.System Methods floatRadix :: (u .^. n) a -> Integer floatDigits :: (u .^. n) a -> Int floatRange :: (u .^. n) a -> (Int, Int) decodeFloat :: (u .^. n) a -> (Integer, Int) encodeFloat :: Integer -> Int -> (u .^. n) a exponent :: (u .^. n) a -> Int significand :: (u .^. n) a -> (u .^. n) a scaleFloat :: Int -> (u .^. n) a -> (u .^. n) a isInfinite :: (u .^. n) a -> Bool isDenormalized :: (u .^. n) a -> Bool isNegativeZero :: (u .^. n) a -> Bool | |||||
Num a => Num ((u .^. n) a) Source # | |||||
Defined in Data.Units.Base.System | |||||
Fractional a => Fractional ((u .^. n) a) Source # | |||||
Defined in Data.Units.Base.System | |||||
Real a => Real ((u .^. n) a) Source # | |||||
Defined in Data.Units.Base.System Methods toRational :: (u .^. n) a -> Rational | |||||
RealFrac a => RealFrac ((u .^. n) a) Source # | |||||
(Show a, ShowUnit u, KnownInt n) => Show ((u .^. n) a) Source # | |||||
Eq a => Eq ((u .^. n) a) Source # | |||||
Ord a => Ord ((u .^. n) a) Source # | |||||
Defined in Data.Units.Base.System | |||||
type DimId (d .^. n) Source # | |||||
Defined in Data.Units.Base.System | |||||
type DimOf (u .^. n) Source # | |||||
Defined in Data.Units.Base.System | |||||
type DimToUnit (d .^. n) Source # | |||||
Defined in Data.Units.Base.System | |||||
type ShowDimType (u .^. n) Source # | |||||
Defined in Data.Units.Base.System | |||||
type ShowUnitType (u .^. n) Source # | |||||
Defined in Data.Units.Base.System |
type (.^+) (a :: Unit) (b :: Nat) = a .^. 'Pos b infix 8 Source #
Positive exponentiation of a unit
type Area = Meter .^+ 2
type (.^-) (a :: Unit) (b :: Nat) = a .^. 'Neg b infix 8 Source #
Negative exponentiation of a unit
type Hertz = Second .^- 1
Unit normalization
type BaseUnitOf (u :: Unit) = DimToUnit (DimOf u) Source #
Normalizes a unit by converting it to a product of exponentiations of base units.
type NormalizeUnitL (u :: Type -> Type) = NormalizeFlatUnitL (Flatten u) Source #
Tries to normalize a unit without converting to base units.
>>>
:kind! NormalizeUnitR (Minute .*. Second)
Minute .^. Pos 2
type NormalizeUnitR (u :: Type -> Type) = NormalizeFlatUnitR (Flatten u) Source #
Tries to normalize a unit without converting to base units. When two units have the same dimension, they will be collapsed to an exponentiation right most unit.
>>>
:kind! NormalizeUnitR (Minute .*. Second)
Second .^. Pos 2
Normalization operators
Multiplication
type (.*~) (u :: Unit) (v :: Unit) = NormalizeUnitL (u .*. v) infixr 7 Source #
Multiplies two units and use left weak normalization.
type (~*.) (u :: Unit) (v :: Unit) = NormalizeUnitR (u .*. v) infixr 7 Source #
Same as
but with priority to right most units(~*.)
type (~*~) (u :: Unit) (v :: Unit) = BaseUnitOf (u .*. v) infixr 7 Source #
Multiplies two units and normalizes the result.
Division
type family (u :: Unit) ./. (v :: Unit) :: Unit where ... infix 6 Source #
Division of two units.
type MySpeed a = (Meter ./. Second) a type MyMolarEntropy a = (Joule ./. Mole .*. Kelvin) a
Notice that multiplication has priority over division.
type (./~) (u :: Unit) (v :: Unit) = NormalizeUnitL (u ./. v) infixr 6 Source #
Divides two units and use left weak normalization.
type (~/.) (u :: Unit) (v :: Unit) = NormalizeUnitR (u ./. v) infixr 7 Source #
Same as
but with priority to right most units(~/.)
type (~/~) (u :: Unit) (v :: Unit) = BaseUnitOf (u ./. v) infixr 6 Source #
Divides two units and normalizes the result.
Exponentiation
type (~^.) (u :: Unit) (n :: ZZ) = NormalizeUnitR (u .^. n) infix 8 Source #
Same as
but with priority to right most units(.^~)