-- Define placeholder types newtype Location = Location Int deriving Show newtype Weather = Weather String deriving Show newtype Conditions = Conditions String deriving Show -- Mock functions (always successful) getLocation :: String -> Location getLocation _ = Location 1 getWeather :: Location -> Weather getWeather _ = Weather "Sunny" toConditions :: Weather -> Conditions toConditions _ = Conditions "Clear Sky" -- Main logic printConditionsAt :: String -> IO () printConditionsAt locationId = do let location = getLocation locationId let weather = getWeather location let conditions = toConditions weather let message = "Weather at " ++ show location ++ ": " ++ show weather ++ " - " ++ show conditions putStrLn message -- Entry point main :: IO () main = printConditionsAt "123"