| Copyright | Copyright (C) 2006-2018 Bjorn Buckwalter |
|---|---|
| License | BSD3 |
| Maintainer | bjorn@buckwalter.se |
| Stability | Stable |
| Portability | GHC only |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Numeric.Units.Dimensional.Dimensions
Description
Provides both term-level and type-level representations for physical dimensions in a single import for convenience.
Presuming that users intend to work primarily with type level dimensions, this module hides arithmetic operators over term level dimensions and aliases for the base term-level dimensions to avoid namespace pollution. These features are available directly from Numeric.Units.Dimensional.Dimensions.TermLevel if desired.
Synopsis
- data Dimension' = Dim' !Int !Int !Int !Int !Int !Int !Int
- class HasDynamicDimension a => HasDimension a where
- dimension :: a -> Dimension'
- class HasDynamicDimension a where
- dynamicDimension :: a -> DynamicDimension
- data DynamicDimension
- dOne :: Dimension'
- asList :: Dimension' -> [Int]
- matchDimensions :: DynamicDimension -> DynamicDimension -> DynamicDimension
- isCompatibleWith :: HasDynamicDimension a => a -> Dimension' -> Bool
- hasSomeDimension :: HasDynamicDimension a => a -> Bool
- module Numeric.Units.Dimensional.Dimensions.TypeLevel
Documentation
data Dimension' Source #
A physical dimension, encoded as 7 integers, representing a factorization of the dimension into the
7 SI base dimensions. By convention they are stored in the same order as
in the Dimension data kind.
Instances
class HasDynamicDimension a => HasDimension a where Source #
Dimensional values inhabit this class, which allows access to a term-level representation of their dimension.
Methods
dimension :: a -> Dimension' Source #
Obtains a term-level representation of a value's dimension.
Instances
| HasDimension Dimension' Source # | |
Defined in Numeric.Units.Dimensional.Dimensions.TermLevel Methods dimension :: Dimension' -> Dimension' Source # | |
| HasDimension AnyUnit Source # | |
Defined in Numeric.Units.Dimensional.Dynamic Methods dimension :: AnyUnit -> Dimension' Source # | |
| HasDimension (AnyQuantity a) Source # | |
Defined in Numeric.Units.Dimensional.Dynamic Methods dimension :: AnyQuantity a -> Dimension' Source # | |
| (KnownTypeInt l, KnownTypeInt m, KnownTypeInt t, KnownTypeInt i, KnownTypeInt th, KnownTypeInt n, KnownTypeInt j) => HasDimension (Proxy ('Dim l m t i th n j)) Source # | |
| KnownDimension d => HasDimension (Dimensional v d a) Source # | |
Defined in Numeric.Units.Dimensional.Internal Methods dimension :: Dimensional v d a -> Dimension' Source # | |
class HasDynamicDimension a where Source #
Dimensional values, or those that are only possibly dimensional, inhabit this class, which allows access to a term-level representation of their dimension.
Minimal complete definition
Nothing
Methods
dynamicDimension :: a -> DynamicDimension Source #
Gets the DynamicDimension of a dynamic dimensional value, which may be NoDimension if it does not represent
a dimensional value of any Dimension.
A default implementation is available for types that are also in the HasDimension typeclass.
default dynamicDimension :: HasDimension a => a -> DynamicDimension Source #
Instances
| HasDynamicDimension Dimension' Source # | |
Defined in Numeric.Units.Dimensional.Dimensions.TermLevel Methods | |
| HasDynamicDimension DynamicDimension Source # | |
Defined in Numeric.Units.Dimensional.Dimensions.TermLevel Methods dynamicDimension :: DynamicDimension -> DynamicDimension Source # | |
| HasDynamicDimension AnyUnit Source # | |
Defined in Numeric.Units.Dimensional.Dynamic Methods | |
| HasDynamicDimension (AnyQuantity a) Source # | |
Defined in Numeric.Units.Dimensional.Dynamic Methods dynamicDimension :: AnyQuantity a -> DynamicDimension Source # | |
| HasDynamicDimension (DynQuantity a) Source # | |
Defined in Numeric.Units.Dimensional.Dynamic Methods dynamicDimension :: DynQuantity a -> DynamicDimension Source # | |
| (KnownTypeInt l, KnownTypeInt m, KnownTypeInt t, KnownTypeInt i, KnownTypeInt th, KnownTypeInt n, KnownTypeInt j) => HasDynamicDimension (Proxy ('Dim l m t i th n j)) Source # | |
Defined in Numeric.Units.Dimensional.Dimensions.TypeLevel Methods dynamicDimension :: Proxy ('Dim l m t i th n j) -> DynamicDimension Source # | |
| KnownDimension d => HasDynamicDimension (Dimensional v d a) Source # | |
Defined in Numeric.Units.Dimensional.Internal Methods dynamicDimension :: Dimensional v d a -> DynamicDimension Source # | |
data DynamicDimension Source #
The dimension of a dynamic value, which may not have any dimension at all.
Constructors
| NoDimension | The value has no valid dimension. |
| SomeDimension Dimension' | The value has the given dimension. |
| AnyDimension | The value may be interpreted as having any dimension. |
Instances
| NFData DynamicDimension Source # | |||||
Defined in Numeric.Units.Dimensional.Dimensions.TermLevel Methods rnf :: DynamicDimension -> () Source # | |||||
| HasDynamicDimension DynamicDimension Source # | |||||
Defined in Numeric.Units.Dimensional.Dimensions.TermLevel Methods dynamicDimension :: DynamicDimension -> DynamicDimension Source # | |||||
| Data DynamicDimension Source # | |||||
Defined in Numeric.Units.Dimensional.Dimensions.TermLevel Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DynamicDimension -> c DynamicDimension Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DynamicDimension Source # toConstr :: DynamicDimension -> Constr Source # dataTypeOf :: DynamicDimension -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DynamicDimension) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DynamicDimension) Source # gmapT :: (forall b. Data b => b -> b) -> DynamicDimension -> DynamicDimension Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DynamicDimension -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DynamicDimension -> r Source # gmapQ :: (forall d. Data d => d -> u) -> DynamicDimension -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> DynamicDimension -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> DynamicDimension -> m DynamicDimension Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DynamicDimension -> m DynamicDimension Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DynamicDimension -> m DynamicDimension Source # | |||||
| Generic DynamicDimension Source # | |||||
Defined in Numeric.Units.Dimensional.Dimensions.TermLevel Associated Types
Methods from :: DynamicDimension -> Rep DynamicDimension x Source # to :: Rep DynamicDimension x -> DynamicDimension Source # | |||||
| Show DynamicDimension Source # | |||||
| Eq DynamicDimension Source # | |||||
Defined in Numeric.Units.Dimensional.Dimensions.TermLevel Methods (==) :: DynamicDimension -> DynamicDimension -> Bool Source # (/=) :: DynamicDimension -> DynamicDimension -> Bool Source # | |||||
| Ord DynamicDimension Source # | |||||
Defined in Numeric.Units.Dimensional.Dimensions.TermLevel Methods compare :: DynamicDimension -> DynamicDimension -> Ordering Source # (<) :: DynamicDimension -> DynamicDimension -> Bool Source # (<=) :: DynamicDimension -> DynamicDimension -> Bool Source # (>) :: DynamicDimension -> DynamicDimension -> Bool Source # (>=) :: DynamicDimension -> DynamicDimension -> Bool Source # max :: DynamicDimension -> DynamicDimension -> DynamicDimension Source # min :: DynamicDimension -> DynamicDimension -> DynamicDimension Source # | |||||
| type Rep DynamicDimension Source # | |||||
Defined in Numeric.Units.Dimensional.Dimensions.TermLevel type Rep DynamicDimension = D1 ('MetaData "DynamicDimension" "Numeric.Units.Dimensional.Dimensions.TermLevel" "dimensional-1.6.1-Dgz8nIXMP4P33G2QTOxAKW" 'False) (C1 ('MetaCons "NoDimension" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "SomeDimension" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Dimension')) :+: C1 ('MetaCons "AnyDimension" 'PrefixI 'False) (U1 :: Type -> Type))) | |||||
dOne :: Dimension' Source #
The dimension of dimensionless values.
asList :: Dimension' -> [Int] Source #
Converts a dimension to a list of 7 integers, representing the exponent associated with each of the 7 SI base dimensions in the standard order.
matchDimensions :: DynamicDimension -> DynamicDimension -> DynamicDimension Source #
Combines two DynamicDimensions, determining the DynamicDimension of a quantity that must
match both inputs.
This is the lattice meet operation for DynamicDimension.
isCompatibleWith :: HasDynamicDimension a => a -> Dimension' -> Bool Source #
Determines if a value that has a DynamicDimension is compatible with a specified Dimension'.
hasSomeDimension :: HasDynamicDimension a => a -> Bool Source #
Determines if a value that has a DynamicDimension in fact has any valid dimension at all.