repos / handle-examples.hs.git


handle-examples.hs.git / vinyl-handle / impl
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{..}