Challenge 1: A Color Type With Derived Eq and Show — Possible Solution ==================================================================== Main.hs: data Color = Red | Green | Blue deriving (Eq, Show) main :: IO () main = do print (Red == Green) print (Red == Red) putStrLn (show Blue) Output: False True Blue Explanation: deriving (Eq, Show) generates both instances automatically from Color's own structure -- no hand-written code needed. The derived Eq instance considers two Color values equal only if they're literally the same constructor, so Red == Green is False and Red == Red is True. The derived Show instance converts each constructor to its own name as a String, so show Blue produces "Blue", exactly the mechanism that has been powering every print call used throughout this entire course. WHY THIS WORKS AS AN ANSWER ------------------------------ This uses deriving exactly as the chapter introduces it for a straightforward sum type, demonstrating both the Eq comparison and the Show conversion working correctly with zero hand-written instance code.