repos / handle-examples.hs.git


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