packages feed

eurofxref-0.2.0: example.hs

import Financial.EuroFXRef
import Network.HTTP.Conduit (parseUrl)
import Control.Applicative
import Control.Exception
import Control.Monad
import qualified Data.Map as M
import Data.Time.Format
import Prelude hiding (catch)
import System.Locale (defaultTimeLocale)

main = do
    r <- rebase (Currency "USD") <$> fetch
    dumpRates r
  `catch` (\exc -> do
    putStrLn $ "FAILED: "++show (exc :: EuropeanCentralBankException)
    return ())
  `catch` (\exc -> do
    putStrLn $ "IOException: "++show (exc :: IOException)
    return ())

dumpRates :: Rates Double -> IO ()
dumpRates r = do
    let Currency cur = raReference r
    putStrLn $ "The value of "++ cur ++ " 1 in each currency on "++formatTime defaultTimeLocale "%F" (raTime r)
    forM_ (M.assocs . raRates $ r) $ \(Currency cur, rate) -> do
        putStrLn $ cur ++ " " ++ show rate