module Numeric.Datasets.Gapminder where
import Numeric.Datasets
import Data.Csv
import GHC.Generics
import Control.Applicative
import Data.Text (Text)
data Gapminder = Gapminder
{ country :: Text
, year :: Int
, pop :: Integer
, continent :: Text
, lifeExp :: Double
, gdpPercap :: Double
} deriving (Show, Read, Generic)
instance FromNamedRecord Gapminder where
parseNamedRecord m = Gapminder <$>
m .: "country" <*>
m .: "year" <*>
(roundIt <$> m .: "pop") <*>
m .: "continent" <*>
m .: "lifeExp" <*>
m .: "gdpPercap"
where roundIt :: Double -> Integer
roundIt = round
gapminder :: Dataset Gapminder
gapminder = csvHdrDataset
$ URL "https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv"