--
-- TODO : consider Either
report :: Requestable r => r -> IO (Maybe [Weather])
report req = do
    response <- httpLBS . toRequest $ req
    return . sh $ getWeathers <$> (decode . responseBody $ response)
    where sh Nothing = Nothing
          sh (Just []) = Nothing
          sh (Just (h:_)) = Just h
report :: Requestable r => r -> IO (Maybe [Weather])
report req = do
    response <- httpLBS . toRequest $ req
    return . sh $ getWeathers <$> (decode . responseBody $ response)
    where sh Nothing = Nothing
          sh (Just []) = Nothing
          sh (Just (h:_)) = Just h
report req = do
    response <- httpLBS . toRequest $ req
    return . sh $ getWeathers <$> (decode . responseBody $ response)
    where sh Nothing = Nothing
          sh (Just []) = Nothing
          sh (Just (h:_)) = Just h