Challenge 2: Why take 5 [10..] Doesn't Hang — Possible Solution ==================================================================== GHCi session: Prelude> take 5 [10..] [10,11,12,13,14] -- [10..] genuinely describes an infinite list starting at 10, with -- no upper bound written anywhere. This doesn't hang or crash because -- Haskell is lazy by default: writing [10..] doesn't actually compute -- any list elements at all -- it just creates a description of HOW to -- produce them, one at a time, on demand. take 5 then asks for -- exactly five elements, so exactly five get computed (10 through -- 14) and nothing beyond that is ever touched. If instead something -- had asked for the FULL list (e.g. printing [10..] directly with no -- take), that WOULD hang forever, since there's no natural stopping -- point to demand up to. The safety here comes specifically from only -- ever demanding a finite prefix of an infinite structure. WHY THIS WORKS AS AN ANSWER ------------------------------ This reproduces the chapter's own take/infinite-list example with a different starting number, and the explanation correctly identifies that laziness means only the demanded elements are ever computed, while also noting the case (printing the full list) that WOULD hang, showing a real understanding of the boundary.