Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. {-# LANGUAGE OverloadedStrings #-}
  2.  
  3. import Data.Aeson
  4. import Data.Aeson.Types
  5. import Data.Time
  6. import Data.Text
  7.  
  8. import qualified Data.HashMap.Strict as HM
  9.  
  10. parseRecords :: Value -> Parser [(Day, Double)]
  11. parseRecords = withObject "record" $ \obj -> do
  12.     mapM (uncurry parseRecord) (HM.toList obj)
  13.     where
  14.         parseRecord :: Text -> Value -> Parser (Day, Double)
  15.         parseRecord s val = flip (withText "price") val $ \text -> do
  16.           day <- getDay $ unpack s
  17.           return (day, getPrice text)
  18.         getDay str = parseTimeM True defaultTimeLocale "%Y-%m-%d" str :: Parser Day
  19.         getPrice str = read $ unpack str :: Double
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement