packages feed

checked-literals 0.1.0.0 → 0.1.1

raw patch · 7 files changed

+117/−91 lines, 7 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.CheckedNegativeIntegerLiteral lit GHC.Num.Integer.Integer
- CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.CheckedNegativeIntegerLiteral lit GHC.Types.Double
- CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.CheckedNegativeIntegerLiteral lit GHC.Types.Float
- CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.CheckedPositiveIntegerLiteral lit GHC.Num.Integer.Integer
- CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.CheckedPositiveIntegerLiteral lit GHC.Num.Natural.Natural
- CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.CheckedPositiveIntegerLiteral lit GHC.Types.Double
- CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.CheckedPositiveIntegerLiteral lit GHC.Types.Float
- CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.NegativeNaturalError lit GHC.Num.Natural.Natural => CheckedLiterals.Class.Integer.CheckedNegativeIntegerLiteral lit GHC.Num.Natural.Natural
- CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.NegativeUnsignedError lit GHC.Types.Word 18446744073709551615 => CheckedLiterals.Class.Integer.CheckedNegativeIntegerLiteral lit GHC.Types.Word
- CheckedLiterals.Class.Integer: instance GHC.Internal.TypeError.Assert (lit GHC.Internal.Data.Type.Ord.<=? 18446744073709551615) (CheckedLiterals.Class.Integer.PositiveUnsignedError lit GHC.Types.Word 18446744073709551615) => CheckedLiterals.Class.Integer.CheckedPositiveIntegerLiteral lit GHC.Types.Word
- CheckedLiterals.Class.Integer: instance GHC.Internal.TypeError.Assert (lit GHC.Internal.Data.Type.Ord.<=? 9223372036854775807) (CheckedLiterals.Class.Integer.PositiveSignedError lit GHC.Types.Int 9223372036854775808 9223372036854775807) => CheckedLiterals.Class.Integer.CheckedPositiveIntegerLiteral lit GHC.Types.Int
- CheckedLiterals.Class.Integer: instance GHC.Internal.TypeError.Assert (lit GHC.Internal.Data.Type.Ord.<=? 9223372036854775808) (CheckedLiterals.Class.Integer.NegativeSignedError lit GHC.Types.Int 9223372036854775808 9223372036854775807) => CheckedLiterals.Class.Integer.CheckedNegativeIntegerLiteral lit GHC.Types.Int
- CheckedLiterals.Class.Rational: instance (GHC.Internal.TypeError.Assert (num GHC.Internal.Data.Type.Ord.<=? 18446744073709551615) (CheckedLiterals.Class.Rational.PositiveUnsignedRatioNotRepresentable str num den GHC.Types.Word 18446744073709551615), GHC.Internal.TypeError.Assert (den GHC.Internal.Data.Type.Ord.<=? 18446744073709551615) (CheckedLiterals.Class.Rational.PositiveUnsignedRatioNotRepresentable str num den GHC.Types.Word 18446744073709551615)) => CheckedLiterals.Class.Rational.CheckedPositiveRationalLiteral str num den (GHC.Internal.Real.Ratio GHC.Types.Word)
- CheckedLiterals.Class.Rational: instance (GHC.Internal.TypeError.Assert (num GHC.Internal.Data.Type.Ord.<=? 9223372036854775807) (CheckedLiterals.Class.Rational.PositiveSignedRatioNotRepresentable str num den GHC.Types.Int 9223372036854775808 9223372036854775807), GHC.Internal.TypeError.Assert (den GHC.Internal.Data.Type.Ord.<=? 9223372036854775807) (CheckedLiterals.Class.Rational.PositiveSignedRatioNotRepresentable str num den GHC.Types.Int 9223372036854775808 9223372036854775807)) => CheckedLiterals.Class.Rational.CheckedPositiveRationalLiteral str num den (GHC.Internal.Real.Ratio GHC.Types.Int)
- CheckedLiterals.Class.Rational: instance (GHC.Internal.TypeError.Assert (num GHC.Internal.Data.Type.Ord.<=? 9223372036854775808) (CheckedLiterals.Class.Rational.NegativeSignedRatioNotRepresentable str num den GHC.Types.Int 9223372036854775808 9223372036854775807), GHC.Internal.TypeError.Assert (den GHC.Internal.Data.Type.Ord.<=? 9223372036854775807) (CheckedLiterals.Class.Rational.NegativeSignedRatioNotRepresentable str num den GHC.Types.Int 9223372036854775808 9223372036854775807)) => CheckedLiterals.Class.Rational.CheckedNegativeRationalLiteral str num den (GHC.Internal.Real.Ratio GHC.Types.Int)
- CheckedLiterals.Class.Rational: instance CheckedLiterals.Class.Rational.CheckedNegativeRationalLiteral str num den GHC.Types.Double
- CheckedLiterals.Class.Rational: instance CheckedLiterals.Class.Rational.CheckedNegativeRationalLiteral str num den GHC.Types.Float
- CheckedLiterals.Class.Rational: instance CheckedLiterals.Class.Rational.CheckedPositiveRationalLiteral str num den (GHC.Internal.Real.Ratio GHC.Num.Natural.Natural)
- CheckedLiterals.Class.Rational: instance CheckedLiterals.Class.Rational.CheckedPositiveRationalLiteral str num den GHC.Types.Double
- CheckedLiterals.Class.Rational: instance CheckedLiterals.Class.Rational.CheckedPositiveRationalLiteral str num den GHC.Types.Float
- CheckedLiterals.Class.Rational: instance CheckedLiterals.Class.Rational.NegativeNaturalRatioNotRepresentable str num den GHC.Num.Natural.Natural => CheckedLiterals.Class.Rational.CheckedNegativeRationalLiteral str num den (GHC.Internal.Real.Ratio GHC.Num.Natural.Natural)
- CheckedLiterals.Class.Rational: instance CheckedLiterals.Class.Rational.NegativeUnsignedRatioNotRepresentable str num den GHC.Types.Word 18446744073709551615 => CheckedLiterals.Class.Rational.CheckedNegativeRationalLiteral str num den (GHC.Internal.Real.Ratio GHC.Types.Word)
+ CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.CheckedNegativeIntegerLiteral lit GHC.Internal.Bignum.Integer.Integer
+ CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.CheckedNegativeIntegerLiteral lit GHC.Internal.Types.Double
+ CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.CheckedNegativeIntegerLiteral lit GHC.Internal.Types.Float
+ CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.CheckedPositiveIntegerLiteral lit GHC.Internal.Bignum.Integer.Integer
+ CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.CheckedPositiveIntegerLiteral lit GHC.Internal.Bignum.Natural.Natural
+ CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.CheckedPositiveIntegerLiteral lit GHC.Internal.Types.Double
+ CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.CheckedPositiveIntegerLiteral lit GHC.Internal.Types.Float
+ CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.NegativeNaturalError lit GHC.Internal.Bignum.Natural.Natural => CheckedLiterals.Class.Integer.CheckedNegativeIntegerLiteral lit GHC.Internal.Bignum.Natural.Natural
+ CheckedLiterals.Class.Integer: instance CheckedLiterals.Class.Integer.NegativeUnsignedError lit GHC.Internal.Types.Word 18446744073709551615 => CheckedLiterals.Class.Integer.CheckedNegativeIntegerLiteral lit GHC.Internal.Types.Word
+ CheckedLiterals.Class.Integer: instance GHC.Internal.TypeError.Assert (lit GHC.Internal.Data.Type.Ord.<=? 18446744073709551615) (CheckedLiterals.Class.Integer.PositiveUnsignedError lit GHC.Internal.Types.Word 18446744073709551615) => CheckedLiterals.Class.Integer.CheckedPositiveIntegerLiteral lit GHC.Internal.Types.Word
+ CheckedLiterals.Class.Integer: instance GHC.Internal.TypeError.Assert (lit GHC.Internal.Data.Type.Ord.<=? 9223372036854775807) (CheckedLiterals.Class.Integer.PositiveSignedError lit GHC.Internal.Types.Int 9223372036854775808 9223372036854775807) => CheckedLiterals.Class.Integer.CheckedPositiveIntegerLiteral lit GHC.Internal.Types.Int
+ CheckedLiterals.Class.Integer: instance GHC.Internal.TypeError.Assert (lit GHC.Internal.Data.Type.Ord.<=? 9223372036854775808) (CheckedLiterals.Class.Integer.NegativeSignedError lit GHC.Internal.Types.Int 9223372036854775808 9223372036854775807) => CheckedLiterals.Class.Integer.CheckedNegativeIntegerLiteral lit GHC.Internal.Types.Int
+ CheckedLiterals.Class.Rational: instance (GHC.Internal.TypeError.Assert (num GHC.Internal.Data.Type.Ord.<=? 18446744073709551615) (CheckedLiterals.Class.Rational.PositiveUnsignedRatioNotRepresentable str num den GHC.Internal.Types.Word 18446744073709551615), GHC.Internal.TypeError.Assert (den GHC.Internal.Data.Type.Ord.<=? 18446744073709551615) (CheckedLiterals.Class.Rational.PositiveUnsignedRatioNotRepresentable str num den GHC.Internal.Types.Word 18446744073709551615)) => CheckedLiterals.Class.Rational.CheckedPositiveRationalLiteral str num den (GHC.Internal.Real.Ratio GHC.Internal.Types.Word)
+ CheckedLiterals.Class.Rational: instance (GHC.Internal.TypeError.Assert (num GHC.Internal.Data.Type.Ord.<=? 9223372036854775807) (CheckedLiterals.Class.Rational.PositiveSignedRatioNotRepresentable str num den GHC.Internal.Types.Int 9223372036854775808 9223372036854775807), GHC.Internal.TypeError.Assert (den GHC.Internal.Data.Type.Ord.<=? 9223372036854775807) (CheckedLiterals.Class.Rational.PositiveSignedRatioNotRepresentable str num den GHC.Internal.Types.Int 9223372036854775808 9223372036854775807)) => CheckedLiterals.Class.Rational.CheckedPositiveRationalLiteral str num den (GHC.Internal.Real.Ratio GHC.Internal.Types.Int)
+ CheckedLiterals.Class.Rational: instance (GHC.Internal.TypeError.Assert (num GHC.Internal.Data.Type.Ord.<=? 9223372036854775808) (CheckedLiterals.Class.Rational.NegativeSignedRatioNotRepresentable str num den GHC.Internal.Types.Int 9223372036854775808 9223372036854775807), GHC.Internal.TypeError.Assert (den GHC.Internal.Data.Type.Ord.<=? 9223372036854775807) (CheckedLiterals.Class.Rational.NegativeSignedRatioNotRepresentable str num den GHC.Internal.Types.Int 9223372036854775808 9223372036854775807)) => CheckedLiterals.Class.Rational.CheckedNegativeRationalLiteral str num den (GHC.Internal.Real.Ratio GHC.Internal.Types.Int)
+ CheckedLiterals.Class.Rational: instance CheckedLiterals.Class.Rational.CheckedNegativeRationalLiteral str num den GHC.Internal.Types.Double
+ CheckedLiterals.Class.Rational: instance CheckedLiterals.Class.Rational.CheckedNegativeRationalLiteral str num den GHC.Internal.Types.Float
+ CheckedLiterals.Class.Rational: instance CheckedLiterals.Class.Rational.CheckedPositiveRationalLiteral str num den (GHC.Internal.Real.Ratio GHC.Internal.Bignum.Natural.Natural)
+ CheckedLiterals.Class.Rational: instance CheckedLiterals.Class.Rational.CheckedPositiveRationalLiteral str num den GHC.Internal.Types.Double
+ CheckedLiterals.Class.Rational: instance CheckedLiterals.Class.Rational.CheckedPositiveRationalLiteral str num den GHC.Internal.Types.Float
+ CheckedLiterals.Class.Rational: instance CheckedLiterals.Class.Rational.NegativeNaturalRatioNotRepresentable str num den GHC.Internal.Bignum.Natural.Natural => CheckedLiterals.Class.Rational.CheckedNegativeRationalLiteral str num den (GHC.Internal.Real.Ratio GHC.Internal.Bignum.Natural.Natural)
+ CheckedLiterals.Class.Rational: instance CheckedLiterals.Class.Rational.NegativeUnsignedRatioNotRepresentable str num den GHC.Internal.Types.Word 18446744073709551615 => CheckedLiterals.Class.Rational.CheckedNegativeRationalLiteral str num den (GHC.Internal.Real.Ratio GHC.Internal.Types.Word)

Files

CHANGELOG.md view
@@ -1,5 +1,8 @@ # Revision history for `checked-literals` +## 0.1.1 -- 2026-05-13+* Added support for macOS+ ## 0.1.0.0 -- 2026-02-28  * First version. Released on an unsuspecting world.
README.md view
@@ -39,7 +39,6 @@  # TODO - [ ] Test in larger ecosystems (bittide?)-- [ ] Release on Hackage - [ ] Implement in `clash-prelude` - [ ] Investigate use of "if instance exist" hackery to get better error messages in completely polymorphic settings? (Low priority, IMO.) 
checked-literals.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.4 name: checked-literals-version: 0.1.0.0+version: 0.1.1 synopsis: GHC plugin for checked numeric literals description:   GHC plugin that rewrites numeric literals so out-of-bounds and inexact@@ -13,7 +13,7 @@ license: BSD-2-Clause license-file: LICENSE author: Martijn Bastiaan-maintainer: martijn@hmbastiaan.nl+maintainer: QBayLogic B.V. <devops@qbaylogic.com> category: Development build-type: Simple extra-doc-files:@@ -68,7 +68,10 @@     syb >=0.7 && <0.8,     template-haskell >=2.20 && <2.25, -  hs-source-dirs: src+  hs-source-dirs:+    src+    src-extra+   default-language: GHC2021   default-extensions:     DataKinds@@ -102,6 +105,7 @@   import: warnings, typechecker-plugins, sane-records   type: exitcode-stdio-1.0   main-is: Main.hs+  ghc-options: -fplugin=CheckedLiterals   other-modules:     Data.Ratio.Extra     Test.Tasty.AssertGhc@@ -139,6 +143,6 @@    hs-source-dirs:     tests-    src+    src-extra    default-language: GHC2021
+ src-extra/Data/Ratio/Extra.hs view
@@ -0,0 +1,32 @@+module Data.Ratio.Extra where++import Data.Ratio qualified as Ratio++{- | Show a 'Rational' in fixed-point notation, without using scientific notation.++>>> showFixedPoint (1 % 2)+"0.5"+>>> showFixedPoint (-0.1)+"-0.1"+>>> showFixedPoint 10+"10.0"+>>> showFixedPoint 1.154646000+"1.154646"+-}+showFixedPoint :: Rational -> String+showFixedPoint rational+  | numerator < 0 = "-" <> result+  | otherwise = result+ where+  result = show whole <> "." <> concat (go0 fractional)+  (whole, fractional) = abs numerator `quotRem` denominator+  numerator = Ratio.numerator rational+  denominator = Ratio.denominator rational++  go0 0 = ["0"]+  go0 i = go1 i++  go1 0 = []+  go1 i = show w : go1 f+   where+    (w, f) = (10 * i) `quotRem` denominator
src/CheckedLiterals/Class/Integer.hs view
@@ -36,11 +36,13 @@   (Assert (lit <=? $(maxBoundAsNat @T)) (PositiveUnsignedError lit T $(maxBoundAsNat @T))) => \   CheckedPositiveIntegerLiteral lit T -CHECKED_POSITIVE_UNSIGNED_INTEGER_INSTANCE (Word)-CHECKED_POSITIVE_UNSIGNED_INTEGER_INSTANCE (Word8)-CHECKED_POSITIVE_UNSIGNED_INTEGER_INSTANCE (Word16)-CHECKED_POSITIVE_UNSIGNED_INTEGER_INSTANCE (Word32)-CHECKED_POSITIVE_UNSIGNED_INTEGER_INSTANCE (Word64)+{- FOURMOLU_DISABLE -}+CHECKED_POSITIVE_UNSIGNED_INTEGER_INSTANCE(Word)+CHECKED_POSITIVE_UNSIGNED_INTEGER_INSTANCE(Word8)+CHECKED_POSITIVE_UNSIGNED_INTEGER_INSTANCE(Word16)+CHECKED_POSITIVE_UNSIGNED_INTEGER_INSTANCE(Word32)+CHECKED_POSITIVE_UNSIGNED_INTEGER_INSTANCE(Word64)+{- FOURMOLU_ENABLE -}  instance CheckedPositiveIntegerLiteral lit Integer @@ -66,11 +68,13 @@   ) => \   CheckedPositiveIntegerLiteral lit T -CHECKED_POSITIVE_SIGNED_INTEGER_INSTANCE (Int)-CHECKED_POSITIVE_SIGNED_INTEGER_INSTANCE (Int8)-CHECKED_POSITIVE_SIGNED_INTEGER_INSTANCE (Int16)-CHECKED_POSITIVE_SIGNED_INTEGER_INSTANCE (Int32)-CHECKED_POSITIVE_SIGNED_INTEGER_INSTANCE (Int64)+{- FOURMOLU_DISABLE -}+CHECKED_POSITIVE_SIGNED_INTEGER_INSTANCE(Int)+CHECKED_POSITIVE_SIGNED_INTEGER_INSTANCE(Int8)+CHECKED_POSITIVE_SIGNED_INTEGER_INSTANCE(Int16)+CHECKED_POSITIVE_SIGNED_INTEGER_INSTANCE(Int32)+CHECKED_POSITIVE_SIGNED_INTEGER_INSTANCE(Int64)+{- FOURMOLU_ENABLE -}  -- Float/Double always round (or clamp to infinity) instance CheckedPositiveIntegerLiteral lit Float@@ -110,11 +114,13 @@         ':$$: 'Text "Possible fix: use 'uncheckedLiteral' from 'CheckedLiterals' to bypass this check."     ) -CHECKED_NEGATIVE_UNSIGNED_INTEGER_INSTANCE (Word)-CHECKED_NEGATIVE_UNSIGNED_INTEGER_INSTANCE (Word8)-CHECKED_NEGATIVE_UNSIGNED_INTEGER_INSTANCE (Word16)-CHECKED_NEGATIVE_UNSIGNED_INTEGER_INSTANCE (Word32)-CHECKED_NEGATIVE_UNSIGNED_INTEGER_INSTANCE (Word64)+{- FOURMOLU_DISABLE -}+CHECKED_NEGATIVE_UNSIGNED_INTEGER_INSTANCE(Word)+CHECKED_NEGATIVE_UNSIGNED_INTEGER_INSTANCE(Word8)+CHECKED_NEGATIVE_UNSIGNED_INTEGER_INSTANCE(Word16)+CHECKED_NEGATIVE_UNSIGNED_INTEGER_INSTANCE(Word32)+CHECKED_NEGATIVE_UNSIGNED_INTEGER_INSTANCE(Word64)+{- FOURMOLU_ENABLE -}  instance CheckedNegativeIntegerLiteral lit Integer @@ -140,11 +146,13 @@   ) => \   CheckedNegativeIntegerLiteral lit T -CHECKED_NEGATIVE_SIGNED_INTEGER_INSTANCE (Int)-CHECKED_NEGATIVE_SIGNED_INTEGER_INSTANCE (Int8)-CHECKED_NEGATIVE_SIGNED_INTEGER_INSTANCE (Int16)-CHECKED_NEGATIVE_SIGNED_INTEGER_INSTANCE (Int32)-CHECKED_NEGATIVE_SIGNED_INTEGER_INSTANCE (Int64)+{- FOURMOLU_DISABLE -}+CHECKED_NEGATIVE_SIGNED_INTEGER_INSTANCE(Int)+CHECKED_NEGATIVE_SIGNED_INTEGER_INSTANCE(Int8)+CHECKED_NEGATIVE_SIGNED_INTEGER_INSTANCE(Int16)+CHECKED_NEGATIVE_SIGNED_INTEGER_INSTANCE(Int32)+CHECKED_NEGATIVE_SIGNED_INTEGER_INSTANCE(Int64)+{- FOURMOLU_ENABLE -}  -- Float/Double always round (or clamp to infinity) instance CheckedNegativeIntegerLiteral lit Float
src/CheckedLiterals/Class/Rational.hs view
@@ -51,13 +51,15 @@   ) => \   CheckedPositiveRationalLiteral str num den (Fixed E) -CHECKED_POSITIVE_FIXED_RATIONAL_INSTANCE (E0, 1)-CHECKED_POSITIVE_FIXED_RATIONAL_INSTANCE (E1, 10)-CHECKED_POSITIVE_FIXED_RATIONAL_INSTANCE (E2, 100)-CHECKED_POSITIVE_FIXED_RATIONAL_INSTANCE (E3, 1_000)-CHECKED_POSITIVE_FIXED_RATIONAL_INSTANCE (E6, 1_000_000)-CHECKED_POSITIVE_FIXED_RATIONAL_INSTANCE (E9, 1_000_000_000)-CHECKED_POSITIVE_FIXED_RATIONAL_INSTANCE ((res :: Nat), res)+{- FOURMOLU_DISABLE -}+CHECKED_POSITIVE_FIXED_RATIONAL_INSTANCE(E0, 1)+CHECKED_POSITIVE_FIXED_RATIONAL_INSTANCE(E1, 10)+CHECKED_POSITIVE_FIXED_RATIONAL_INSTANCE(E2, 100)+CHECKED_POSITIVE_FIXED_RATIONAL_INSTANCE(E3, 1_000)+CHECKED_POSITIVE_FIXED_RATIONAL_INSTANCE(E6, 1_000_000)+CHECKED_POSITIVE_FIXED_RATIONAL_INSTANCE(E9, 1_000_000_000)+CHECKED_POSITIVE_FIXED_RATIONAL_INSTANCE((res :: Nat), res)+{- FOURMOLU_ENABLE -}  -- | Identity helper that attaches a positive rational literal check. checkedPositiveRationalLiteral :: (CheckedPositiveRationalLiteral fixed num den a) => a -> a@@ -78,13 +80,15 @@   ) => \   CheckedNegativeRationalLiteral str num den (Fixed E) -CHECKED_NEGATIVE_FIXED_RATIONAL_INSTANCE (E0, 1)-CHECKED_NEGATIVE_FIXED_RATIONAL_INSTANCE (E1, 10)-CHECKED_NEGATIVE_FIXED_RATIONAL_INSTANCE (E2, 100)-CHECKED_NEGATIVE_FIXED_RATIONAL_INSTANCE (E3, 1_000)-CHECKED_NEGATIVE_FIXED_RATIONAL_INSTANCE (E6, 1_000_000)-CHECKED_NEGATIVE_FIXED_RATIONAL_INSTANCE (E9, 1_000_000_000)-CHECKED_NEGATIVE_FIXED_RATIONAL_INSTANCE ((res :: Nat), res)+{- FOURMOLU_DISABLE -}+CHECKED_NEGATIVE_FIXED_RATIONAL_INSTANCE(E0, 1)+CHECKED_NEGATIVE_FIXED_RATIONAL_INSTANCE(E1, 10)+CHECKED_NEGATIVE_FIXED_RATIONAL_INSTANCE(E2, 100)+CHECKED_NEGATIVE_FIXED_RATIONAL_INSTANCE(E3, 1_000)+CHECKED_NEGATIVE_FIXED_RATIONAL_INSTANCE(E6, 1_000_000)+CHECKED_NEGATIVE_FIXED_RATIONAL_INSTANCE(E9, 1_000_000_000)+CHECKED_NEGATIVE_FIXED_RATIONAL_INSTANCE((res :: Nat), res)+{- FOURMOLU_ENABLE -}  -- | Identity helper that attaches a negative rational literal check. checkedNegativeRationalLiteral :: (CheckedNegativeRationalLiteral fixed num den a) => a -> a@@ -124,11 +128,13 @@   ) => \   CheckedPositiveRationalLiteral str num den (Ratio T) -CHECKED_POSITIVE_UNSIGNED_RATIONAL_INSTANCE (Word)-CHECKED_POSITIVE_UNSIGNED_RATIONAL_INSTANCE (Word64)-CHECKED_POSITIVE_UNSIGNED_RATIONAL_INSTANCE (Word32)-CHECKED_POSITIVE_UNSIGNED_RATIONAL_INSTANCE (Word16)-CHECKED_POSITIVE_UNSIGNED_RATIONAL_INSTANCE (Word8)+{- FOURMOLU_DISABLE -}+CHECKED_POSITIVE_UNSIGNED_RATIONAL_INSTANCE(Word)+CHECKED_POSITIVE_UNSIGNED_RATIONAL_INSTANCE(Word64)+CHECKED_POSITIVE_UNSIGNED_RATIONAL_INSTANCE(Word32)+CHECKED_POSITIVE_UNSIGNED_RATIONAL_INSTANCE(Word16)+CHECKED_POSITIVE_UNSIGNED_RATIONAL_INSTANCE(Word8)+{- FOURMOLU_ENABLE -}  type PositiveSignedRatioNotRepresentable str num den typ minVal maxVal =   TypeError@@ -166,11 +172,13 @@   ) => \   CheckedPositiveRationalLiteral str num den (Ratio T) -CHECKED_POSITIVE_SIGNED_RATIONAL_INSTANCE (Int)-CHECKED_POSITIVE_SIGNED_RATIONAL_INSTANCE (Int64)-CHECKED_POSITIVE_SIGNED_RATIONAL_INSTANCE (Int32)-CHECKED_POSITIVE_SIGNED_RATIONAL_INSTANCE (Int16)-CHECKED_POSITIVE_SIGNED_RATIONAL_INSTANCE (Int8)+{- FOURMOLU_DISABLE -}+CHECKED_POSITIVE_SIGNED_RATIONAL_INSTANCE(Int)+CHECKED_POSITIVE_SIGNED_RATIONAL_INSTANCE(Int64)+CHECKED_POSITIVE_SIGNED_RATIONAL_INSTANCE(Int32)+CHECKED_POSITIVE_SIGNED_RATIONAL_INSTANCE(Int16)+CHECKED_POSITIVE_SIGNED_RATIONAL_INSTANCE(Int8)+{- FOURMOLU_ENABLE -}  type NegativeNaturalRatioNotRepresentable str num den typ =   TypeError@@ -210,11 +218,13 @@   (NegativeUnsignedRatioNotRepresentable str num den T $(maxBoundAsNat @T)) => \   CheckedNegativeRationalLiteral str num den (Ratio T) -CHECKED_NEGATIVE_UNSIGNED_RATIONAL_INSTANCE (Word)-CHECKED_NEGATIVE_UNSIGNED_RATIONAL_INSTANCE (Word64)-CHECKED_NEGATIVE_UNSIGNED_RATIONAL_INSTANCE (Word32)-CHECKED_NEGATIVE_UNSIGNED_RATIONAL_INSTANCE (Word16)-CHECKED_NEGATIVE_UNSIGNED_RATIONAL_INSTANCE (Word8)+{- FOURMOLU_DISABLE -}+CHECKED_NEGATIVE_UNSIGNED_RATIONAL_INSTANCE(Word)+CHECKED_NEGATIVE_UNSIGNED_RATIONAL_INSTANCE(Word64)+CHECKED_NEGATIVE_UNSIGNED_RATIONAL_INSTANCE(Word32)+CHECKED_NEGATIVE_UNSIGNED_RATIONAL_INSTANCE(Word16)+CHECKED_NEGATIVE_UNSIGNED_RATIONAL_INSTANCE(Word8)+{- FOURMOLU_ENABLE -}  type NegativeSignedRatioNotRepresentable str num den typ minVal maxVal =   TypeError@@ -252,8 +262,10 @@   ) => \   CheckedNegativeRationalLiteral str num den (Ratio T) -CHECKED_NEGATIVE_SIGNED_RATIONAL_INSTANCE (Int)-CHECKED_NEGATIVE_SIGNED_RATIONAL_INSTANCE (Int64)-CHECKED_NEGATIVE_SIGNED_RATIONAL_INSTANCE (Int32)-CHECKED_NEGATIVE_SIGNED_RATIONAL_INSTANCE (Int16)-CHECKED_NEGATIVE_SIGNED_RATIONAL_INSTANCE (Int8)+{- FOURMOLU_DISABLE -}+CHECKED_NEGATIVE_SIGNED_RATIONAL_INSTANCE(Int)+CHECKED_NEGATIVE_SIGNED_RATIONAL_INSTANCE(Int64)+CHECKED_NEGATIVE_SIGNED_RATIONAL_INSTANCE(Int32)+CHECKED_NEGATIVE_SIGNED_RATIONAL_INSTANCE(Int16)+CHECKED_NEGATIVE_SIGNED_RATIONAL_INSTANCE(Int8)+{- FOURMOLU_ENABLE -}
− src/Data/Ratio/Extra.hs
@@ -1,32 +0,0 @@-module Data.Ratio.Extra where--import Data.Ratio qualified as Ratio--{- | Show a 'Rational' in fixed-point notation, without using scientific notation.-->>> showFixedPoint (1 % 2)-"0.5"->>> showFixedPoint (-0.1)-"-0.1"->>> showFixedPoint 10-"10.0"->>> showFixedPoint 1.154646000-"1.154646"--}-showFixedPoint :: Rational -> String-showFixedPoint rational-  | numerator < 0 = "-" <> result-  | otherwise = result- where-  result = show whole <> "." <> concat (go0 fractional)-  (whole, fractional) = abs numerator `quotRem` denominator-  numerator = Ratio.numerator rational-  denominator = Ratio.denominator rational--  go0 0 = ["0"]-  go0 i = go1 i--  go1 0 = []-  go1 i = show w : go1 f-   where-    (w, f) = (10 * i) `quotRem` denominator