Challenge 1: A triple Function via Partial Application — Possible Solution ==================================================================== Main.hs: multiply :: Int -> Int -> Int multiply x y = x * y triple :: Int -> Int triple = multiply 3 main :: IO () main = print (triple 7) Output: 21 Explanation: `triple = multiply 3` partially applies multiply with just its first argument. Because multiply is really a curried chain (Int -> (Int -> Int)), supplying only 3 doesn't produce an error or require a placeholder for the missing argument -- it produces a genuine, complete, real function of type Int -> Int, which is exactly triple's own declared type. No lambda (\x -> multiply 3 x) was needed anywhere. WHY THIS WORKS AS AN ANSWER ------------------------------ This uses partial application directly, exactly as the chapter's own addFive example demonstrates, producing a real named function from a more general one with no wrapper lambda written at all.