{-# LANGUAGE CPP #-}
module Main where
import Numeric
import Text.Display
import Text.PrettyPrint.ANSI.Leijen as PP
data MyRecord = MyRecord
{ numerators :: [Double]
, denominator :: Double
} deriving (Show)
record :: MyRecord
record = MyRecord
{ numerators = [0, 5..100]
, denominator = 1326
}
instance
#if __GLASGOW_HASKELL >= 710
{-# OVERLAPPING #-}
#endif
Display MyRecord where
display a = mkDisplayTextStr
$ show
$ toCol "MyRecord (percentage): " <> toCol (displayPerc a)
where
displayPerc a = showFFloat (Just 2) (toPerc a) "%"
toPerc a = sum (numerators a) / denominator a * 100
toCol a = (PP.dullgreen . PP.fill 25 . PP.text) a
main :: IO ()
main = do
dPrint record
pPrint record