Merge pull request #6 from BeFunctional/edsko/structured-floating

Structured.Show instance for float/double
This commit is contained in:
Edsko de Vries 2023-03-23 15:41:47 +00:00 committed by GitHub
commit c28efafcb6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -123,6 +123,9 @@ data Value where
-- These are shown assuming @NumericUnderscores@.
Integral :: forall a. (Prelude.Show a, Integral a) => a -> Value
-- | Floating point numbers
Floating :: Double -> Value
-- | Quasi-quote
--
-- We separate out the quasi-quoter from the quoted string proper.
@ -259,6 +262,9 @@ instance Show Int128 where toValue = Integral
instance Show Integer where toValue = Integral
instance Show Float where toValue = Floating . realToFrac
instance Show Double where toValue = Floating
instance {-# OVERLAPPABLE #-} Show a => Show [a] where
toValue = List . map toValue
@ -451,6 +457,7 @@ render = \contextNeedsBrackets ->
bracketIf (contextneedsBrackets && requiresBrackets val) $
case val of
Integral x -> simple $ addNumericUnderscores (Prelude.show x)
Floating x -> simple $ Prelude.show x
String x -> simple $ Prelude.show x
Constr c ts xs -> renderComposite (compositeConstr c ts) $
map (go True) xs