dimensional 1.0.1.2 → 1.0.1.3
raw patch · 3 files changed
+20/−11 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Numeric.Units.Dimensional.UnitNames.InterchangeNames: instance GHC.Generics.Constructor Numeric.Units.Dimensional.UnitNames.InterchangeNames.C1_0InterchangeName
- Numeric.Units.Dimensional.UnitNames.InterchangeNames: instance GHC.Generics.Constructor Numeric.Units.Dimensional.UnitNames.InterchangeNames.C1_0InterchangeNameAuthority
- Numeric.Units.Dimensional.UnitNames.InterchangeNames: instance GHC.Generics.Constructor Numeric.Units.Dimensional.UnitNames.InterchangeNames.C1_1InterchangeNameAuthority
- Numeric.Units.Dimensional.UnitNames.InterchangeNames: instance GHC.Generics.Constructor Numeric.Units.Dimensional.UnitNames.InterchangeNames.C1_2InterchangeNameAuthority
- Numeric.Units.Dimensional.UnitNames.InterchangeNames: instance GHC.Generics.Datatype Numeric.Units.Dimensional.UnitNames.InterchangeNames.D1InterchangeName
- Numeric.Units.Dimensional.UnitNames.InterchangeNames: instance GHC.Generics.Datatype Numeric.Units.Dimensional.UnitNames.InterchangeNames.D1InterchangeNameAuthority
- Numeric.Units.Dimensional.UnitNames.InterchangeNames: instance GHC.Generics.Selector Numeric.Units.Dimensional.UnitNames.InterchangeNames.S1_0_0InterchangeName
- Numeric.Units.Dimensional.UnitNames.InterchangeNames: instance GHC.Generics.Selector Numeric.Units.Dimensional.UnitNames.InterchangeNames.S1_0_1InterchangeName
- Numeric.Units.Dimensional.Variants: instance GHC.Generics.Constructor Numeric.Units.Dimensional.Variants.C1_0Metricality
- Numeric.Units.Dimensional.Variants: instance GHC.Generics.Constructor Numeric.Units.Dimensional.Variants.C1_0Variant
- Numeric.Units.Dimensional.Variants: instance GHC.Generics.Constructor Numeric.Units.Dimensional.Variants.C1_1Metricality
- Numeric.Units.Dimensional.Variants: instance GHC.Generics.Constructor Numeric.Units.Dimensional.Variants.C1_1Variant
- Numeric.Units.Dimensional.Variants: instance GHC.Generics.Datatype Numeric.Units.Dimensional.Variants.D1Metricality
- Numeric.Units.Dimensional.Variants: instance GHC.Generics.Datatype Numeric.Units.Dimensional.Variants.D1Variant
+ Numeric.Units.Dimensional: data family Dimensional v :: Dimension -> * -> *;
+ Numeric.Units.Dimensional: infixl 6 -
+ Numeric.Units.Dimensional: infixl 7 /~~
+ Numeric.Units.Dimensional: infixr 8 **
+ Numeric.Units.Dimensional: }
+ Numeric.Units.Dimensional.Dimensions.TermLevel: infixl 7 /
+ Numeric.Units.Dimensional.Dimensions.TermLevel: infixr 8 ^
+ Numeric.Units.Dimensional.UnitNames: infixl 7 /
+ Numeric.Units.Dimensional.UnitNames: infixr 8 ^
- Numeric.Units.Dimensional: class KnownVariant (v :: Variant) where data family Dimensional v :: Dimension -> * -> *
+ Numeric.Units.Dimensional: class KnownVariant (v :: Variant) where data Dimensional v :: Dimension -> * -> * where {
- Numeric.Units.Dimensional: siUnit :: (KnownDimension d, Num a) => Unit NonMetric d a
+ Numeric.Units.Dimensional: siUnit :: forall d a. (KnownDimension d, Num a) => Unit NonMetric d a
- Numeric.Units.Dimensional.Dynamic: demoteQuantity :: (KnownDimension d) => Quantity d v -> AnyQuantity v
+ Numeric.Units.Dimensional.Dynamic: demoteQuantity :: forall d v. (KnownDimension d) => Quantity d v -> AnyQuantity v
- Numeric.Units.Dimensional.Dynamic: demoteUnit :: (KnownDimension d) => Unit a d v -> AnyUnit
+ Numeric.Units.Dimensional.Dynamic: demoteUnit :: forall a d v. (KnownDimension d) => Unit a d v -> AnyUnit
- Numeric.Units.Dimensional.Dynamic: promoteQuantity :: (KnownDimension d) => AnyQuantity v -> Maybe (Quantity d v)
+ Numeric.Units.Dimensional.Dynamic: promoteQuantity :: forall d v. (KnownDimension d) => AnyQuantity v -> Maybe (Quantity d v)
- Numeric.Units.Dimensional.Dynamic: promoteUnit :: (KnownDimension d) => AnyUnit -> Maybe (Unit NonMetric d ExactPi)
+ Numeric.Units.Dimensional.Dynamic: promoteUnit :: forall d. (KnownDimension d) => AnyUnit -> Maybe (Unit NonMetric d ExactPi)
- Numeric.Units.Dimensional.UnitNames: relax :: (Typeable m1, Typeable m2) => UnitName m1 -> Maybe (UnitName m2)
+ Numeric.Units.Dimensional.UnitNames: relax :: forall m1 m2. (Typeable m1, Typeable m2) => UnitName m1 -> Maybe (UnitName m2)
Files
- CHANGELOG.md +4/−0
- dimensional.cabal +1/−1
- src/Numeric/Units/Dimensional.hs +15/−10
CHANGELOG.md view
@@ -1,3 +1,7 @@+1.0.1.3 (2016-09) +----------------- +* Fixed an issue with applying metric prefixes to units with non-rational conversion factors. + 1.0.1.2 (2016-05) ----------------- * Support for GHC 8.0.1-rc4, avoiding GHC Trac issue 12026.
dimensional.cabal view
@@ -1,5 +1,5 @@ name: dimensional -version: 1.0.1.2 +version: 1.0.1.3 license: BSD3 license-file: LICENSE copyright: Bjorn Buckwalter 2006-2015
src/Numeric/Units/Dimensional.hs view
@@ -665,8 +665,11 @@ -- Supplying negative defining quantities is allowed and handled gracefully, but is discouraged -- on the grounds that it may be unexpected by other readers. mkUnitR :: Floating a => UnitName m -> ExactPi -> Unit m1 d a -> Unit m d a -mkUnitR n s' (Unit _ s x) | isExactZero s = error "Supplying zero as a conversion factor is not valid." - | otherwise = Unit n (s' Prelude.* s) (approximateValue s' Prelude.* x) +mkUnitR n s (Unit _ e _) | isExactZero s = error "Supplying zero as a conversion factor is not valid." + | otherwise = Unit n e' x' + where + e' = s Prelude.* e + x' = approximateValue e' -- | Forms a new atomic 'Unit' by specifying its 'UnitName' and its definition as a multiple of another 'Unit'. -- @@ -675,11 +678,12 @@ -- -- For more information see 'mkUnitR'. mkUnitQ :: Fractional a => UnitName m -> Rational -> Unit m1 d a -> Unit m d a -mkUnitQ n s' (Unit _ s _) | s' == 0 = error "Supplying zero as a conversion factor is not valid." - | Just q <- toExactRational s'' = Unit n s'' (fromRational q) - | otherwise = error "The resulting conversion factor is not an exact rational." +mkUnitQ n s (Unit _ e x) | s == 0 = error "Supplying zero as a conversion factor is not valid." + | Just x'' <- toExactRational e' = Unit n e' (fromRational x'') + | otherwise = Unit n e' x' where - s'' = fromRational s' Prelude.* s + e' = fromRational s Prelude.* e + x' = fromRational s Prelude.* x -- | Forms a new atomic 'Unit' by specifying its 'UnitName' and its definition as a multiple of another 'Unit'. -- @@ -688,8 +692,9 @@ -- -- For more information see 'mkUnitR'. mkUnitZ :: Num a => UnitName m -> Integer -> Unit m1 d a -> Unit m d a -mkUnitZ n s' (Unit _ s _) | s' == 0 = error "Supplying zero as a conversion factor is not valid." - | Just z <- toExactInteger s'' = Unit n s'' (fromInteger z) - | otherwise = error "The resulting conversion factor is not an exact integer." +mkUnitZ n s (Unit _ e x) | s == 0 = error "Supplying zero as a conversion factor is not valid." + | Just x'' <- toExactInteger e' = Unit n e' (fromInteger x'') + | otherwise = Unit n e' x' where - s'' = fromInteger s' Prelude.* s + e' = fromInteger s Prelude.* e + x' = fromInteger s Prelude.* x