Paths between imperative and functional programming
Thomas J. Ball · ACM SIGPLAN Notices · 1999
This article explores relationships between imperative and functional programming by viewing a program as a set of paths. We argue, through a small case study, that the presence of infeasible (or unexecutable) paths makes programs harder to understand. We identify two main causes of infeasible paths, “unnecessary ” sequenc-ing and destructive update, hallmarks of an imperative programming style. Functional programming eschews se-quencing and destructive update, which can result in pro-grams with fewer infeasible paths that are easier to un-derstand. No proofs are included. We intend to provoke discussion regarding imperative and functional program-ming styles. Feasible and Infeasible Paths Regardless of the language they spring from, programs