| 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 | GHC2024 |
Data.Units.Core.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.Core.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.Core.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.Core.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.Core.System | |||||
| IsDim d => IsDim (d .^. n) Source # | |||||
Defined in Data.Units.Core.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
| |||||
| ShowUnit Lux Source # | |||||
Defined in Data.Units.AngleSI.Derived Associated Types
| |||||
| ShowUnit Steradian Source # | |||||
Defined in Data.Units.AngleSI.Derived Associated Types
| |||||
| ShowUnit Degree Source # | |||||
Defined in Data.Units.AngleSI.NonSI.Angle Associated Types
| |||||
| ShowUnit Gradian Source # | |||||
Defined in Data.Units.AngleSI.NonSI.Angle Associated Types
| |||||
| ShowUnit Turn Source # | |||||
Defined in Data.Units.AngleSI.NonSI.Angle Associated Types
| |||||
| ShowUnit Radian Source # | |||||
Defined in Data.Units.AngleSI.System Associated Types
| |||||
| ShowUnit Acre Source # | |||||
Defined in Data.Units.Imperial.Area Associated Types
| |||||
| ShowUnit Perch Source # | |||||
Defined in Data.Units.Imperial.Area Associated Types
| |||||
| ShowUnit Rood Source # | |||||
Defined in Data.Units.Imperial.Area Associated Types
| |||||
| ShowUnit Barleycorn Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| ShowUnit Cable Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| ShowUnit Chain Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| ShowUnit Fathom Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| ShowUnit Foot Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| ShowUnit Furlong Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| ShowUnit Hand Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| ShowUnit Inch Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| ShowUnit League Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| ShowUnit Link Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| ShowUnit Mile Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| ShowUnit NauticalMile Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| ShowUnit Rod Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| ShowUnit Thou Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| ShowUnit Twip Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| ShowUnit Yard Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| ShowUnit Fahrenheit Source # | |||||
Defined in Data.Units.NonSI.Temperature Associated Types
| |||||
| ShowUnit Hour Source # | |||||
Defined in Data.Units.NonSI.Time Associated Types
| |||||
| ShowUnit Minute Source # | |||||
Defined in Data.Units.NonSI.Time Associated Types
| |||||
| ShowUnit Lumen Source # | |||||
Defined in Data.Units.SI.Derived.Angle Associated Types
| |||||
| ShowUnit Lux Source # | |||||
Defined in Data.Units.SI.Derived.Angle Associated Types
| |||||
| ShowUnit Radian Source # | |||||
Defined in Data.Units.SI.Derived.Angle Associated Types
| |||||
| ShowUnit Steradian Source # | |||||
Defined in Data.Units.SI.Derived.Angle Associated Types
| |||||
| ShowUnit Becquerel Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Celsius Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Coulomb Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Farad Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Gray Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Henry Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Hertz Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Joule Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Katal Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Newton Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Ohm Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Pascal Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Siemens Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Sievert Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Tesla Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Volt Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Watt Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Weber Source # | |||||
Defined in Data.Units.SI.Derived.NonAngle Associated Types
| |||||
| ShowUnit Degree Source # | |||||
Defined in Data.Units.SI.NonSI.Angle Associated Types
| |||||
| ShowUnit Gradian Source # | |||||
Defined in Data.Units.SI.NonSI.Angle Associated Types
| |||||
| ShowUnit Turn Source # | |||||
Defined in Data.Units.SI.NonSI.Angle Associated Types
| |||||
| ShowUnit Ampere Source # | |||||
Defined in Data.Units.SI.System Associated Types
| |||||
| ShowUnit Candela Source # | |||||
Defined in Data.Units.SI.System Associated Types
| |||||
| ShowUnit Gram Source # | |||||
Defined in Data.Units.SI.System Associated Types
| |||||
| ShowUnit Kelvin Source # | |||||
Defined in Data.Units.SI.System Associated Types
| |||||
| ShowUnit Meter Source # | |||||
Defined in Data.Units.SI.System Associated Types
| |||||
| ShowUnit Mole Source # | |||||
Defined in Data.Units.SI.System Associated Types
| |||||
| ShowUnit Second Source # | |||||
Defined in Data.Units.SI.System Associated Types
| |||||
| ShowUnit Mil Source # | |||||
Defined in Data.Units.UsCustomary.Length Associated Types
| |||||
| ShowUnit Pica Source # | |||||
Defined in Data.Units.UsCustomary.Length Associated Types
| |||||
| ShowUnit Point Source # | |||||
Defined in Data.Units.UsCustomary.Length Associated Types
| |||||
| ShowUnit u => ShowUnit (MetaUnit u) Source # | |||||
Defined in Data.Units.Core.System Associated Types
| |||||
| ShowUnit u => ShowUnit (Atto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Centi u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Deca u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Deci u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Exa u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Femto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Giga u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Hecto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Kilo u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Mega u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Micro u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Milli u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Nano u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Peta u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Pico u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Quecca u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Quecto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Ronna u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Ronto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Tera u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Yocto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Yotta u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Zepto u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| ShowUnit u => ShowUnit (Zetta u) Source # | |||||
Defined in Data.Units.SI.Prefixes Associated Types
| |||||
| (ShowPrefix p, ShowUnit u) => ShowUnit (MetaPrefix p u) Source # | |||||
Defined in Data.Units.Core.Prefix Associated Types
| |||||
| (ShowUnit u, ShowUnit v) => ShowUnit (u .*. v) Source # | |||||
Defined in Data.Units.Core.System Associated Types
| |||||
| (ShowUnit u, KnownInt n) => ShowUnit (u .^. n) Source # | |||||
Defined in Data.Units.Core.System Associated Types
| |||||
| (KnownNat b, KnownInt offs) => ShowUnit (Tet b offs) Source # | |||||
Defined in Data.Units.NonSI.Frequency Associated Types
| |||||
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 @NewtonUnit: 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.NonSI.Angle | |||||
| IsUnit Gradian Source # | |||||
Defined in Data.Units.AngleSI.NonSI.Angle | |||||
| IsUnit Turn Source # | |||||
Defined in Data.Units.AngleSI.NonSI.Angle | |||||
| IsUnit Radian Source # | |||||
Defined in Data.Units.AngleSI.System | |||||
| IsUnit NoUnit Source # | |||||
Defined in Data.Units.Core.System | |||||
| IsUnit Acre Source # | |||||
Defined in Data.Units.Imperial.Area | |||||
| IsUnit Perch Source # | |||||
Defined in Data.Units.Imperial.Area | |||||
| IsUnit Rood Source # | |||||
Defined in Data.Units.Imperial.Area | |||||
| IsUnit Barleycorn Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| IsUnit Cable Source # | |||||
Defined in Data.Units.Imperial.Length | |||||
| IsUnit Chain Source # | |||||
Defined in Data.Units.Imperial.Length | |||||
| IsUnit Fathom Source # | |||||
Defined in Data.Units.Imperial.Length | |||||
| IsUnit Foot Source # | |||||
Defined in Data.Units.Imperial.Length | |||||
| IsUnit Furlong Source # | |||||
Defined in Data.Units.Imperial.Length | |||||
| IsUnit Hand Source # | |||||
Defined in Data.Units.Imperial.Length | |||||
| IsUnit Inch Source # | |||||
Defined in Data.Units.Imperial.Length | |||||
| IsUnit League Source # | |||||
Defined in Data.Units.Imperial.Length | |||||
| IsUnit Link Source # | |||||
Defined in Data.Units.Imperial.Length | |||||
| IsUnit Mile Source # | |||||
Defined in Data.Units.Imperial.Length | |||||
| IsUnit NauticalMile Source # | |||||
Defined in Data.Units.Imperial.Length Associated Types
| |||||
| IsUnit Rod Source # | |||||
Defined in Data.Units.Imperial.Length | |||||
| IsUnit Thou Source # | |||||
Defined in Data.Units.Imperial.Length | |||||
| IsUnit Twip Source # | |||||
Defined in Data.Units.Imperial.Length | |||||
| IsUnit Yard Source # | |||||
Defined in Data.Units.Imperial.Length | |||||
| IsUnit Fahrenheit Source # | |||||
Defined in Data.Units.NonSI.Temperature Associated Types
| |||||
| IsUnit Hour Source # | |||||
Defined in Data.Units.NonSI.Time | |||||
| IsUnit Minute Source # | |||||
Defined in Data.Units.NonSI.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.NonSI.Angle | |||||
| IsUnit Gradian Source # | |||||
Defined in Data.Units.SI.NonSI.Angle | |||||
| IsUnit Turn Source # | |||||
Defined in Data.Units.SI.NonSI.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 Mil Source # | |||||
Defined in Data.Units.UsCustomary.Length | |||||
| IsUnit Pica Source # | |||||
Defined in Data.Units.UsCustomary.Length | |||||
| IsUnit Point Source # | |||||
Defined in Data.Units.UsCustomary.Length | |||||
| IsUnit u => IsUnit (MetaUnit u) Source # | |||||
Defined in Data.Units.Core.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.Core.Prefix Associated Types
| |||||
| (IsUnit u, IsUnit v) => IsUnit (u .*. v) Source # | |||||
Defined in Data.Units.Core.System Associated Types
| |||||
| IsUnit u => IsUnit (u .^. n) Source # | |||||
Defined in Data.Units.Core.System Associated Types
| |||||
| IsUnit (Tet b offs) Source # | |||||
Defined in Data.Units.NonSI.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) 1quantity @(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
| IsDim NoDim Source # | |||||
Defined in Data.Units.Core.System | |||||
| ShowDim NoDim Source # | |||||
Defined in Data.Units.Core.System Associated Types
| |||||
| Functor NoDim Source # | |||||
| Monoid a => Monoid (NoDim a) Source # | |||||
| Semigroup a => Semigroup (NoDim a) Source # | |||||
| Bounded a => Bounded (NoDim a) Source # | |||||
| Enum a => Enum (NoDim a) Source # | |||||
| Floating a => Floating (NoDim a) Source # | |||||
| RealFloat a => RealFloat (NoDim a) Source # | |||||
Defined in Data.Units.Core.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 # | |||||
| Real a => Real (NoDim a) Source # | |||||
Defined in Data.Units.Core.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 # | |||||
Defined in Data.Units.Core.System | |||||
| type DimId NoDim Source # | |||||
Defined in Data.Units.Core.System | |||||
| type DimToUnit NoDim Source # | |||||
Defined in Data.Units.Core.System | |||||
| type ShowDimType NoDim Source # | |||||
Defined in Data.Units.Core.System | |||||
A unit that has no dimension.
type MyHertz = NoUnit ./. Second
Constructors
| NoUnit a |
Instances
| IsUnit NoUnit Source # | |
Defined in Data.Units.Core.System | |
| Functor NoUnit Source # | |
| Fractional a => ConversionFactor NoUnit a Source # | |
Defined in Data.Units.Core.Convert | |
| Fractional a => ConvertibleUnit NoUnit a Source # | |
Defined in Data.Units.Core.Convert Methods toBaseUnit :: NoUnit a -> BaseUnitOf NoUnit a Source # fromBaseUnit :: BaseUnitOf NoUnit a -> NoUnit a Source # | |
| Floating a => Floating (NoUnit a) Source # | |
Defined in Data.Units.Core.System Methods sqrt :: NoUnit a -> NoUnit a # (**) :: NoUnit a -> NoUnit a -> NoUnit a # logBase :: NoUnit a -> NoUnit a -> NoUnit a # asin :: NoUnit a -> NoUnit a # acos :: NoUnit a -> NoUnit a # atan :: NoUnit a -> NoUnit a # sinh :: NoUnit a -> NoUnit a # cosh :: NoUnit a -> NoUnit a # tanh :: NoUnit a -> NoUnit a # asinh :: NoUnit a -> NoUnit a # acosh :: NoUnit a -> NoUnit a # atanh :: NoUnit a -> NoUnit a # log1p :: NoUnit a -> NoUnit a # expm1 :: NoUnit a -> NoUnit a # | |
| RealFloat a => RealFloat (NoUnit a) Source # | |
Defined in Data.Units.Core.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 # | |
| Real a => Real (NoUnit a) Source # | |
Defined in Data.Units.Core.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.Core.System | |
| type DimOf NoUnit Source # | |
Defined in Data.Units.Core.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
| IsUnit u => IsUnit (MetaUnit u) Source # | |||||
Defined in Data.Units.Core.System | |||||
| ShowUnit u => ShowUnit (MetaUnit u) Source # | |||||
Defined in Data.Units.Core.System Associated Types
| |||||
| Functor (MetaUnit u) Source # | |||||
| Monoid a => Monoid (MetaUnit u a) Source # | |||||
| Semigroup a => Semigroup (MetaUnit u a) Source # | |||||
| Bounded a => Bounded (MetaUnit u a) Source # | |||||
| Enum a => Enum (MetaUnit u a) Source # | |||||
Defined in Data.Units.Core.System Methods succ :: MetaUnit u a -> MetaUnit u a # pred :: MetaUnit u a -> MetaUnit u a # toEnum :: Int -> 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.Core.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.Core.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 # isNaN :: MetaUnit u a -> Bool # 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.Core.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 # | |||||
| Real a => Real (MetaUnit u a) Source # | |||||
Defined in Data.Units.Core.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.Core.System | |||||
| type DimOf (MetaUnit u) Source # | |||||
Defined in Data.Units.Core.System | |||||
| type ShowUnitType (MetaUnit u) Source # | |||||
Defined in Data.Units.Core.System | |||||
newtype ((u :: Unit) .*. (v :: Unit)) a infixr 7 Source #
Multiplication of two units.
type MyForceMoment = Newton .*. Meter
Constructors
| MulUnit a |
Instances
| (IsDim d, IsDim e) => IsDim (d .*. e) Source # | |||||
Defined in Data.Units.Core.System | |||||
| (IsUnit u, IsUnit v) => IsUnit (u .*. v) Source # | |||||
Defined in Data.Units.Core.System Associated Types
| |||||
| (ShowDim u, ShowDim v) => ShowDim (u .*. v) Source # | |||||
Defined in Data.Units.Core.System Associated Types
| |||||
| (ShowUnit u, ShowUnit v) => ShowUnit (u .*. v) Source # | |||||
Defined in Data.Units.Core.System Associated Types
| |||||
| Functor (u .*. v) Source # | |||||
| (Num a, ConversionFactor u a, ConversionFactor v a, IsUnit (BaseUnitOf (u .*. v))) => ConversionFactor (u .*. v) a Source # | |||||
Defined in Data.Units.Core.Convert | |||||
| (Num a, ConversionFactor u a, ConversionFactor v a, IsUnit (BaseUnitOf (u .*. v))) => ConvertibleUnit (u .*. v) a Source # | |||||
Defined in Data.Units.Core.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.Core.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.Core.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 # isNaN :: (u .*. v) a -> Bool # 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.Core.System Methods (+) :: (u .*. v) a -> (u .*. v) a -> (u .*. v) a # (-) :: (u .*. v) a -> (u .*. v) a -> (u .*. v) a # (*) :: (u .*. v) a -> (u .*. v) a -> (u .*. v) a # negate :: (u .*. v) a -> (u .*. v) a # abs :: (u .*. v) a -> (u .*. v) a # signum :: (u .*. v) a -> (u .*. v) a # fromInteger :: Integer -> (u .*. v) a # | |||||
| Fractional a => Fractional ((u .*. v) a) Source # | |||||
| Real a => Real ((u .*. v) a) Source # | |||||
Defined in Data.Units.Core.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.Core.System | |||||
| type DimOf (u .*. v) Source # | |||||
Defined in Data.Units.Core.System | |||||
| type DimToUnit (d .*. e) Source # | |||||
| type ShowDimType (u .*. v) Source # | |||||
Defined in Data.Units.Core.System | |||||
| type ShowUnitType (u .*. v) Source # | |||||
Defined in Data.Units.Core.System | |||||
newtype ((u :: Unit) .^. (n :: ZZ)) a infix 8 Source #
Exponentiation of a unit
type Acceleration = Meter .*. Second .^. Neg 2
Constructors
| PowUnit a |
Instances
| IsDim d => IsDim (d .^. n) Source # | |||||
Defined in Data.Units.Core.System | |||||
| IsUnit u => IsUnit (u .^. n) Source # | |||||
Defined in Data.Units.Core.System Associated Types
| |||||
| (ShowDim u, KnownInt n) => ShowDim (u .^. n) Source # | |||||
Defined in Data.Units.Core.System Associated Types
| |||||
| (ShowUnit u, KnownInt n) => ShowUnit (u .^. n) Source # | |||||
Defined in Data.Units.Core.System Associated Types
| |||||
| Functor (u .^. n) Source # | |||||
| (ConversionFactor u a, IsUnit (BaseUnitOf (u .^. n)), KnownInt n) => ConversionFactor (u .^. n) a Source # | |||||
Defined in Data.Units.Core.Convert | |||||
| (ConversionFactor u a, IsUnit (BaseUnitOf (u .^. n)), KnownInt n) => ConvertibleUnit (u .^. n) a Source # | |||||
Defined in Data.Units.Core.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.Core.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.Core.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 # isNaN :: (u .^. n) a -> Bool # 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.Core.System Methods (+) :: (u .^. n) a -> (u .^. n) a -> (u .^. n) a # (-) :: (u .^. n) a -> (u .^. n) a -> (u .^. n) a # (*) :: (u .^. n) a -> (u .^. n) a -> (u .^. n) a # negate :: (u .^. n) a -> (u .^. n) a # abs :: (u .^. n) a -> (u .^. n) a # signum :: (u .^. n) a -> (u .^. n) a # fromInteger :: Integer -> (u .^. n) a # | |||||
| Fractional a => Fractional ((u .^. n) a) Source # | |||||
| Real a => Real ((u .^. n) a) Source # | |||||
Defined in Data.Units.Core.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.Core.System | |||||
| type DimId (d .^. n) Source # | |||||
Defined in Data.Units.Core.System | |||||
| type DimOf (u .^. n) Source # | |||||
Defined in Data.Units.Core.System | |||||
| type DimToUnit (d .^. n) Source # | |||||
Defined in Data.Units.Core.System | |||||
| type ShowDimType (u .^. n) Source # | |||||
Defined in Data.Units.Core.System | |||||
| type ShowUnitType (u .^. n) Source # | |||||
Defined in Data.Units.Core.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(.^~)