import Financial.EuroFXRef import Network.HTTP.Enumerator (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