This document discusses the impact of functional programming on design decisions. It covers key concepts in functional programming like first class functions, higher order functions, immutability, and lazy evaluation. These concepts encourage a more declarative focus on what to do rather than how to do it. The document also discusses how functional programming influences decomposition through separating data from functions and breaking problems into independent subproblems. Combining solutions through higher order functions and composition is emphasized. Overall, the document argues that a functional mindset can improve modularity and flexibility even when programming in other paradigms.