Evgenii Akentev
·
2023-01-27
SuperWeatherProvider.hs
1{-# LANGUAGE RecordWildCards #-}
2
3module SuperWeatherProvider where
4
5import Data.Vinyl
6import WeatherProvider
7import qualified TemperatureProvider
8import qualified WindProvider
9import QueryTypes
10
11new :: WindProvider.Handle -> TemperatureProvider.Handle -> Handle
12new wp tp = Field (getSuperWeatherData wp tp) :& RNil <+> wp <+> tp
13
14-- | This is some concrete implementation `WeatherProvider` interface
15getSuperWeatherData :: WindProvider.Handle -> TemperatureProvider.Handle -> Location -> Day -> IO WeatherData
16getSuperWeatherData wp tp loc day = do
17 temperature <- TemperatureProvider.getTemperatureData tp loc day
18 wind <- WindProvider.getWindData wp loc day
19 return $ WeatherData{..}