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