From 4163a49a7662ac79fa00cef6d3d985faa6b8adc9 Mon Sep 17 00:00:00 2001 From: Mikolaj Konarski Date: Fri, 24 Jan 2025 05:59:33 +0100 Subject: Eliminate the lame shaped fromInteger implementation --- src/Data/Array/Nested/Internal/Ranked.hs | 2 +- src/Data/Array/Nested/Internal/Shaped.hs | 26 +++++++------------------- 2 files changed, 8 insertions(+), 20 deletions(-) (limited to 'src/Data') diff --git a/src/Data/Array/Nested/Internal/Ranked.hs b/src/Data/Array/Nested/Internal/Ranked.hs index 9483723..5f453a5 100644 --- a/src/Data/Array/Nested/Internal/Ranked.hs +++ b/src/Data/Array/Nested/Internal/Ranked.hs @@ -205,7 +205,7 @@ instance (NumElt a, PrimElt a, Num a) => Num (Ranked n a) where negate = arithPromoteRanked negate abs = arithPromoteRanked abs signum = arithPromoteRanked signum - fromInteger = error "Ranked(fromInteger): Cannot implement fromInteger, use rreplicateScal" + fromInteger = error "Data.Array.Nested.fromInteger: No singletons available, use explicit rreplicateScal" instance (FloatElt a, NumElt a, PrimElt a, Num a) => Fractional (Ranked n a) where fromRational _ = error "Data.Array.Nested.fromRational: No singletons available, use explicit rreplicateScal" diff --git a/src/Data/Array/Nested/Internal/Shaped.hs b/src/Data/Array/Nested/Internal/Shaped.hs index 4071aad..5d1b3b2 100644 --- a/src/Data/Array/Nested/Internal/Shaped.hs +++ b/src/Data/Array/Nested/Internal/Shaped.hs @@ -196,34 +196,22 @@ arithPromoteShaped2 :: forall sh a b c. -> Shaped sh a -> Shaped sh b -> Shaped sh c arithPromoteShaped2 = coerce --- | TODO: 'KnownShS' is only there for 'fromInteger'. -instance (NumElt a, PrimElt a, Num a, KnownShS sh) => Num (Shaped sh a) where +instance (NumElt a, PrimElt a, Num a) => Num (Shaped sh a) where (+) = arithPromoteShaped2 (+) (-) = arithPromoteShaped2 (-) (*) = arithPromoteShaped2 (*) negate = arithPromoteShaped negate abs = arithPromoteShaped abs signum = arithPromoteShaped signum - fromInteger = - case knownShS @sh of - ZSS -> sscalar . fromInteger - _ -> error "Data.Array.Nested.fromInteger: No singletons available, use explicit sreplicateScal" - --- | TODO: 'KnownShS' is only there for 'fromRational'. -instance (FloatElt a, NumElt a, PrimElt a, Fractional a, KnownShS sh) => Fractional (Shaped sh a) where - fromRational = - case knownShS @sh of - ZSS -> sscalar . fromRational - _ -> error "Data.Array.Nested.fromRational: No singletons available, use explicit sreplicateScal" + fromInteger = error "Data.Array.Nested.fromInteger: No singletons available, use explicit sreplicateScal" + +instance (FloatElt a, NumElt a, PrimElt a, Fractional a) => Fractional (Shaped sh a) where + fromRational = error "Data.Array.Nested.fromRational: No singletons available, use explicit sreplicateScal" recip = arithPromoteShaped recip (/) = arithPromoteShaped2 (/) --- | TODO: 'KnownShS' is only there for 'pi'. -instance (FloatElt a, NumElt a, PrimElt a, Floating a, KnownShS sh) => Floating (Shaped sh a) where - pi = - case knownShS @sh of - ZSS -> sscalar pi - _ -> error "Data.Array.Nested.pi: No singletons available, use explicit sreplicateScal" +instance (FloatElt a, NumElt a, PrimElt a, Floating a) => Floating (Shaped sh a) where + pi = error "Data.Array.Nested.pi: No singletons available, use explicit sreplicateScal" exp = arithPromoteShaped exp log = arithPromoteShaped log sqrt = arithPromoteShaped sqrt -- cgit v1.2.3-70-g09d2