dimensional-1.0.1.1: Statically checked physical dimensions, using Type Families and Data Kinds.

CopyrightCopyright (C) 2006-2015 Bjorn Buckwalter
LicenseBSD3
Maintainerbjorn@buckwalter.se
StabilityStable
PortabilityGHC only
Safe HaskellSafe
LanguageHaskell2010

Numeric.Units.Dimensional.UnitNames

Contents

Description

This module provides types and functions for manipulating unit names.

Please note that the details of the name representation may be less stable than the other APIs provided by this package, as new features using them are still being developed.

Synopsis

Data Types

data UnitName m Source

The name of a unit.

data NameAtom m Source

Represents the name of an atomic unit or prefix.

type PrefixName = NameAtom PrefixAtom Source

The name of a metric prefix.

data Metricality Source

Encodes whether a unit is a metric unit, that is, whether it can be combined with a metric prefix to form a related unit.

Constructors

Metric

Capable of receiving a metric prefix.

NonMetric

Incapable of receiving a metric prefix.

Construction of Unit Names

atom Source

Arguments

:: String

Interchange name

-> String

Abbreviated name in international English

-> String

Full name in international English

-> UnitName NonMetric 

Constructs an atomic name for a custom unit.

applyPrefix :: PrefixName -> UnitName Metric -> UnitName NonMetric Source

Forms a UnitName from a Metric name by applying a metric prefix.

(*) :: UnitName m1 -> UnitName m2 -> UnitName NonMetric infixl 7 Source

Form a UnitName by taking the product of two others.

(/) :: UnitName m1 -> UnitName m2 -> UnitName NonMetric infixl 7 Source

Form a UnitName by dividing one by another.

(^) :: UnitName m -> Int -> UnitName NonMetric infixr 8 Source

Form a UnitName by raising a name to an integer power.

product :: Foldable f => f (UnitName NonMetric) -> UnitName NonMetric Source

Forms the product of a list of UnitNames.

If you wish to form a heterogenous product of Metric and NonMetric units you should apply weaken to the Metric ones.

grouped :: UnitName m -> UnitName NonMetric Source

Constructs a UnitName by applying a grouping operation to another UnitName, which may be useful to express precedence.

Standard Names

baseUnitName :: Dimension' -> UnitName NonMetric Source

The name of the base unit associated with a specified dimension.

Names for the Base Units

Names for the SI Metric Prefixes

Convenience Type Synonyms for Unit Name Transformations

type UnitNameTransformer = forall m. UnitName m -> UnitName NonMetric Source

The type of a unit name transformation that may be associated with an operation that takes a single unit as input.

type UnitNameTransformer2 = forall m1 m2. UnitName m1 -> UnitName m2 -> UnitName NonMetric Source

The type of a unit name transformation that may be associated with an operation that takes two units as input.

Forgetting Unwanted Phantom Types

weaken :: UnitName m -> UnitName NonMetric Source

Convert a UnitName which may or may not be Metric to one which is certainly NonMetric.

strengthen :: UnitName m -> Maybe (UnitName Metric) Source

Attempt to convert a UnitName which may or may not be Metric to one which is certainly Metric.

relax :: forall m1 m2. (Typeable m1, Typeable m2) => UnitName m1 -> Maybe (UnitName m2) Source

Convert a UnitName of one Metricality into a name of the other metricality by strengthening or weakening if neccessary. Because it may not be possible to strengthen, the result is returned in a Maybe wrapper.