proomt

Search

Search posts, papers, and topics

Hall of Fame

Hall of FameJohn Hughes199038 min readpaperintermediate

Why Functional Programming Matters

Summary

Hughes argues that functional programming’s real power lies in higher‑order functions and lazy evaluation, which act as new kinds of "glue" for modular design. He illustrates this with foldr and examples ranging from list processing to alpha‑beta pruning, showing how these features simplify and reuse code.

  • Higher‑order functions like foldr separate recursion patterns from operations, enabling massive code reuse.
  • Lazy evaluation provides a new form of compositional glue, allowing infinite structures and modular algorithms without explicit control flow.
  • The paper demonstrates modularity gains with concrete examples: sum, product, list append, and an alpha‑beta game‑tree search.
  • Modularity, not the absence of assignment, is presented as the core advantage of functional programming.

Software engineers and language designers should care because the paper explains foundational techniques that still drive modern functional languages and modular software architecture.

8/10

Related reading

  1. Out of the Tar Pit

    The paper argues that most complexity in large software systems is accidental, caused mainly by mutable state and tangled control flow. It proposes minimizing accidental complexity by using pure functional programming together with a relational data model, emphasizing simplicity over extensive testing.

    Hall of Famecurtclifton.net98 minpaper
  2. On the Criteria To Be Used in Decomposing Systems into Modules

    Parnas argues that effective modularization depends on the criteria used to split a system, not just on grouping subroutines. He illustrates conventional vs. responsibility‑based decompositions on a KWIC index, showing how different criteria affect changeability, understandability, and implementation cost.

    Hall of Fametue.nl21 minpaper