{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_HADDOCK -show-extensions #-}
module Data.ReversedScientific where
import GHC.Base
import GHC.Num ((-),Integer)
import Text.Show (Show(..))
import Data.List (length,dropWhileEnd)
showBignum :: Int -> Integer -> String
showBignum :: Int -> Integer -> String
showBignum Int
n Integer
x
| Int
l0 forall a. Ord a => a -> a -> Bool
< Int
6 = String
xShow
| Int
l forall a. Ord a => a -> a -> Bool
>= Int
n = forall a. Monoid a => [a] -> a
mconcat [String
"e", forall a. Show a => a -> String
show (Int
l forall a. Num a => a -> a -> a
- Int
1), String
"~m", forall a. Show a => a -> String
show Int
l0, String
"~", String
k1s, String
".", String
k2s, String
"...", String
k3s]
| Bool
otherwise = String
xShow
where xShow :: String
xShow = forall a. Show a => a -> String
show Integer
x
l :: Int
l = forall (t :: * -> *) a. Foldable t => t a -> Int
length String
xShow
k :: String
k = forall a. (a -> Bool) -> [a] -> [a]
dropWhileEnd (forall a. Eq a => a -> a -> Bool
== Char
'0') String
xShow
l0 :: Int
l0 = forall (t :: * -> *) a. Foldable t => t a -> Int
length String
k
f :: [a] -> ([a], [a], [a])
f (a
p:a
q:a
r:a
s:a
t:a
u:a
v:[a]
vs) = [a] -> ([a], [a], [a])
f (a
pforall a. a -> [a] -> [a]
:a
qforall a. a -> [a] -> [a]
:a
rforall a. a -> [a] -> [a]
:a
tforall a. a -> [a] -> [a]
:a
uforall a. a -> [a] -> [a]
:a
vforall a. a -> [a] -> [a]
:[a]
vs)
f (a
p:a
q:a
r:a
s:a
t:a
u:[a]
_) = ([a
p], [a
q, a
r], [a
s, a
t, a
u])
(String
k1s,String
k2s,String
k3s) = forall {a}. [a] -> ([a], [a], [a])
f String
k