Copyright | Copyright (C) 2006-2018 Bjorn Buckwalter |
---|---|
License | BSD3 |
Maintainer | bjorn@buckwalter.se |
Stability | Stable |
Portability | GHC only |
Safe Haskell | Safe |
Language | Haskell2010 |
Extensions |
|
Numeric.Units.Dimensional.Variants
Description
Provides a type level representation of Variant
s of dimensional values,
which may be quantities or units.
Documentation
The kind of variants of dimensional values.
Constructors
DQuantity ExactPi' | The value is a quantity, stored as an |
DUnit Metricality | The value is a unit, possibly a |
Instances
Generic Variant Source # | |
type Rep Variant Source # | |
Defined in Numeric.Units.Dimensional.Variants type Rep Variant = D1 ('MetaData "Variant" "Numeric.Units.Dimensional.Variants" "dimensional-1.3-C8v0k83E9Py18UKTdF1oLh" 'False) (C1 ('MetaCons "DQuantity" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ExactPi')) :+: C1 ('MetaCons "DUnit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Metricality))) |
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. |
Instances
Eq Metricality Source # | |
Defined in Numeric.Units.Dimensional.Variants | |
Data Metricality Source # | |
Defined in Numeric.Units.Dimensional.Variants Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Metricality -> c Metricality gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Metricality toConstr :: Metricality -> Constr dataTypeOf :: Metricality -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Metricality) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Metricality) gmapT :: (forall b. Data b => b -> b) -> Metricality -> Metricality gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Metricality -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Metricality -> r gmapQ :: (forall d. Data d => d -> u) -> Metricality -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> Metricality -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> Metricality -> m Metricality gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Metricality -> m Metricality gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Metricality -> m Metricality | |
Ord Metricality Source # | |
Defined in Numeric.Units.Dimensional.Variants Methods compare :: Metricality -> Metricality -> Ordering # (<) :: Metricality -> Metricality -> Bool # (<=) :: Metricality -> Metricality -> Bool # (>) :: Metricality -> Metricality -> Bool # (>=) :: Metricality -> Metricality -> Bool # max :: Metricality -> Metricality -> Metricality # min :: Metricality -> Metricality -> Metricality # | |
Generic Metricality Source # | |
Defined in Numeric.Units.Dimensional.Variants Associated Types type Rep Metricality :: Type -> Type | |
NFData Metricality Source # | |
Defined in Numeric.Units.Dimensional.Variants Methods rnf :: Metricality -> () | |
type Rep Metricality Source # | |
Defined in Numeric.Units.Dimensional.Variants type Rep Metricality = D1 ('MetaData "Metricality" "Numeric.Units.Dimensional.Variants" "dimensional-1.3-C8v0k83E9Py18UKTdF1oLh" 'False) (C1 ('MetaCons "Metric" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NonMetric" 'PrefixI 'False) (U1 :: Type -> Type)) |
type family (v1 :: Variant) * (v2 :: Variant) :: Variant where ... infixl 7 Source #
Forms the product of two Variant
s.
The product of units is a non-metric unit.
The product of quantities is a quantity.
type family Weaken (v :: Variant) :: Variant where ... Source #
Weakens a Variant
by forgetting possibly uninteresting type-level information.
type CompatibleVariants v1 v2 = 'True ~ AreCompatible v1 v2 Source #
Two Variant
s are compatible when dimensional values of the first may be converted
into the second merely by changing the representation of their values.