Challenge 1: A First Two-Line Program — Possible Solution ==================================================================== Main.hs: main :: IO () main = do putStrLn "Hello from Haskell!" putStrLn "This is my second line." Terminal: $ runghc Main.hs Output: Hello from Haskell! This is my second line. Explanation: main's type signature, IO (), states directly that this computation performs IO and produces no meaningful result. Since main now needs to run TWO actions in sequence, it uses a `do` block -- syntax for sequencing IO actions -- with each putStrLn call on its own line. runghc compiles the file in memory and runs it immediately, without a separate explicit compile step. WHY THIS WORKS AS AN ANSWER ------------------------------ This uses the chapter's own main :: IO () shape, extended with a do block to sequence two putStrLn calls, and runs it with runghc exactly as the chapter demonstrates.