mixed-types-num 0.6.0 → 0.6.1
raw patch · 3 files changed
+19/−16 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Numeric.MixedTypes.Literals: instance (Numeric.MixedTypes.Literals.HasIntegers t, GHC.Base.Monoid es) => Numeric.MixedTypes.Literals.ConvertibleExactly (Control.CollectErrors.Type.CollectErrors es t, GHC.Num.Integer.Integer) (Control.CollectErrors.Type.CollectErrors es t)
- Numeric.MixedTypes.Literals: instance (Numeric.MixedTypes.Literals.HasRationals t, GHC.Base.Monoid es) => Numeric.MixedTypes.Literals.ConvertibleExactly (Control.CollectErrors.Type.CollectErrors es t, GHC.Real.Rational) (Control.CollectErrors.Type.CollectErrors es t)
- Numeric.MixedTypes.Literals: instance Numeric.MixedTypes.Literals.ConvertibleExactly (GHC.Num.Integer.Integer, GHC.Num.Integer.Integer) GHC.Num.Integer.Integer
- Numeric.MixedTypes.Literals: instance Numeric.MixedTypes.Literals.ConvertibleExactly (GHC.Real.Rational, GHC.Num.Integer.Integer) GHC.Real.Rational
- Numeric.MixedTypes.Literals: instance Numeric.MixedTypes.Literals.ConvertibleExactly (GHC.Real.Rational, GHC.Real.Rational) GHC.Real.Rational
+ Numeric.MixedTypes.Literals: WithSample :: s -> t -> WithSample s t
+ Numeric.MixedTypes.Literals: data WithSample s t
+ Numeric.MixedTypes.Literals: instance (Numeric.MixedTypes.Literals.HasIntegers t, GHC.Base.Monoid es) => Numeric.MixedTypes.Literals.ConvertibleExactly (Numeric.MixedTypes.Literals.WithSample (Control.CollectErrors.Type.CollectErrors es t) GHC.Num.Integer.Integer) (Control.CollectErrors.Type.CollectErrors es t)
+ Numeric.MixedTypes.Literals: instance (Numeric.MixedTypes.Literals.HasRationals t, GHC.Base.Monoid es) => Numeric.MixedTypes.Literals.ConvertibleExactly (Numeric.MixedTypes.Literals.WithSample (Control.CollectErrors.Type.CollectErrors es t) GHC.Real.Rational) (Control.CollectErrors.Type.CollectErrors es t)
+ Numeric.MixedTypes.Literals: instance Numeric.MixedTypes.Literals.ConvertibleExactly (Numeric.MixedTypes.Literals.WithSample GHC.Num.Integer.Integer GHC.Num.Integer.Integer) GHC.Num.Integer.Integer
+ Numeric.MixedTypes.Literals: instance Numeric.MixedTypes.Literals.ConvertibleExactly (Numeric.MixedTypes.Literals.WithSample GHC.Real.Rational GHC.Num.Integer.Integer) GHC.Real.Rational
+ Numeric.MixedTypes.Literals: instance Numeric.MixedTypes.Literals.ConvertibleExactly (Numeric.MixedTypes.Literals.WithSample GHC.Real.Rational GHC.Real.Rational) GHC.Real.Rational
- Numeric.MixedTypes.Literals: type HasIntegersWithSample t = ConvertibleExactly (t, Integer) t
+ Numeric.MixedTypes.Literals: type HasIntegersWithSample t = ConvertibleExactly (WithSample t Integer) t
- Numeric.MixedTypes.Literals: type HasRationalsWithSample t = ConvertibleExactly (t, Rational) t
+ Numeric.MixedTypes.Literals: type HasRationalsWithSample t = ConvertibleExactly (WithSample t Rational) t
Files
- changelog.md +1/−1
- mixed-types-num.cabal +1/−1
- src/Numeric/MixedTypes/Literals.hs +17/−14
changelog.md view
@@ -1,6 +1,6 @@ # mixed-types-num change log -* v 0.6.0 2024-09-21+* v 0.6.1 2024-09-21 * Ring now requires HasIntegersWithSample instead of HasIntegers * Field now requires HasRationalsWithSample instead of HasRationals * v 0.5.12 2023-08-14
mixed-types-num.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: mixed-types-num-version: 0.6.0+version: 0.6.1 synopsis: Alternative Prelude with numeric and logic expressions typed bottom-up description: Please see the README on GitHub at <https://github.com/michalkonecny/mixed-types-num#readme> category: Math
src/Numeric/MixedTypes/Literals.hs view
@@ -40,6 +40,7 @@ -- * Generalised if-then-else , HasIfThenElse(..), HasIfThenElseSameType -- * Convenient conversions+ , WithSample(..) , CanBeInteger, integer, integers, HasIntegers, fromInteger_, HasIntegersWithSample, fromIntegerWithSample , CanBeInt, int, ints , CanBeRational, rational, rationals, HasRationals, fromRational_, HasRationalsWithSample, fromRationalWithSample@@ -133,9 +134,11 @@ fromInteger_ :: (HasIntegers t) => Integer -> t fromInteger_ = convertExactly -type HasIntegersWithSample t = ConvertibleExactly (t, Integer) t+data WithSample s t = WithSample s t++type HasIntegersWithSample t = ConvertibleExactly (WithSample t Integer) t fromIntegerWithSample :: (HasIntegersWithSample t) => t -> Integer -> t-fromIntegerWithSample sampleT n = convertExactly (sampleT, n)+fromIntegerWithSample sampleT n = convertExactly (WithSample sampleT n) (!!) :: (CanBeInteger n) => [a] -> n -> a list !! ix = List.genericIndex list (integer ix)@@ -194,9 +197,9 @@ fromRational_ :: (HasRationals t) => Rational -> t fromRational_ = convertExactly -type HasRationalsWithSample t = ConvertibleExactly (t, Rational) t+type HasRationalsWithSample t = ConvertibleExactly (WithSample t Rational) t fromRationalWithSample :: (HasRationalsWithSample t) => t -> Rational -> t-fromRationalWithSample sampleT q = convertExactly (sampleT, q)+fromRationalWithSample sampleT q = convertExactly (WithSample sampleT q) type CanBeDouble t = Convertible t Double double :: (CanBeDouble t) => t -> Double@@ -229,8 +232,8 @@ instance ConvertibleExactly Int Integer -- HasIntegersWithSample Integer-instance ConvertibleExactly (Integer, Integer) Integer where- safeConvertExactly (_sample, value) = safeConvert value+instance ConvertibleExactly (WithSample Integer Integer) Integer where+ safeConvertExactly (WithSample _ value) = safeConvert value -- CanBeInt Int instance ConvertibleExactly Int Int where@@ -247,12 +250,12 @@ instance ConvertibleExactly Integer Rational -- HasIntegersWithSample Rational-instance ConvertibleExactly (Rational, Integer) Rational where- safeConvertExactly (_sample, value) = safeConvert value+instance ConvertibleExactly (WithSample Rational Integer) Rational where+ safeConvertExactly (WithSample _sample value) = safeConvert value -- HasRationalsWithSample Rational-instance ConvertibleExactly (Rational, Rational) Rational where- safeConvertExactly (_sample, value) = safeConvertExactly value+instance ConvertibleExactly (WithSample Rational Rational) Rational where+ safeConvertExactly (WithSample _ value) = safeConvertExactly value -- HasIntegers Double instance ConvertibleExactly Integer Double where@@ -350,13 +353,13 @@ instance (HasIntegers t, Monoid es) => -- HasIntegersWithSample (CollectErrors es t)- ConvertibleExactly (CollectErrors es t, Integer) (CollectErrors es t) where- safeConvertExactly (_sample, value) = fmap pure $ safeConvertExactly value+ ConvertibleExactly (WithSample (CollectErrors es t) Integer) (CollectErrors es t) where+ safeConvertExactly (WithSample _ value) = fmap pure $ safeConvertExactly value instance (HasRationals t, Monoid es) => -- HasRationalsWithSample (CollectErrors es t)- ConvertibleExactly (CollectErrors es t, Rational) (CollectErrors es t) where- safeConvertExactly (_sample, value) = fmap pure $ safeConvertExactly value+ ConvertibleExactly (WithSample (CollectErrors es t) Rational) (CollectErrors es t) where+ safeConvertExactly (WithSample _sample value) = fmap pure $ safeConvertExactly value $(declForTypes