Daniel P. Friedman
Daniel Paul Friedman (born 1944) is a professor of Computer Science at Indiana University in Bloomington, Indiana. His research focuses on programming languages, and he is a prominent author in the field. With David Wise, Friedman wrote a highly influential paper on lazy programming, specifically on lazy streams (ICALP 1976). The paper, entitled "Cons should not evaluate its arguments,"  is one of the first publications pushing for the exploration of a programming style with potentially infinite data structures and a form of programming that employs no computational effects (though programs may diverge). Over the 1970s, Friedman and Wise explored the topic in depth and also considered extensions to the world of parallel computing. In the 1980s, Friedman turned to the study of the Scheme programming language. He explored the use of macros for defining programming languages; with Eugene Kohlbecker, Matthias Felleisen, and Bruce Duba, he co-introduced the notion of hygienic macros in a 1986 LFP paper that is still widely cited today. With Christopher T. Haynes and Mitchell Wand, he simultaneously studied the nature of continuation objects, their uses, and the possibilities of constraining them. Following that, Friedman and Felleisen introduced a lambda calculus with continuations and control operators. Their work has spawned work on semantics, connections between classical logic and computation, and practical extensions of continuations. Friedman is also a prolific textbook author. His first textbook, The Little LISPer, dates back to 1974 and is still in print in its fourth edition, now called The Little Schemer (with Felleisen). Friedman and Felleisen wrote three more "little" books in the 1990s:  The Little MLer, The Seasoned Schemer, and A Little Java, A Few Patterns. Friedman is also the lead author of Essentials of Programming Languages, a textbook on programming languages. As such, it changed the landscape of language textbooks in the 1980s, shifting the focus from surveys of languages to the study of principles via series of interpreters. Today's textbooks on this topic tend to follow this organization, employing operational semantics and type theory instead of interpreters. Like The Little LISPer, Essentials of Programming Languages is a long-living book and is in its third edition now. Most recently, Friedman resumed work on his "Little" series with the following titles: The Reasoned Schemer (with William E. Byrd and Oleg Kiselyov) explains logic programming via an extension of Scheme. The Little Prover (with Carl Eastlund) introduces inductive proofs as a way to determine facts about computer programs. The Little Typer (with David Thrane Christiansen) explains dependent types, beginning with a very small language that looks very much like Scheme and extending it to cover both programming with dependent types and using dependent types for mathematical reasoning. The Little Learner (with Anurag Mendhekar) introduces deep learning from the bottom up, inviting students to learn by doing. References

Books
Daniel P. Friedman is the author or co-author of the following books:
 The Little Lisper   (MIT Press, 1987)
 The Little Schemer  (MIT Press, 4th Ed., 1996)
 The Little MLer  (MIT Press, 1998)
 A Little Java, A Few Patterns  (MIT Press, 1998)
 The Seasoned Schemer  (MIT Press, 1996)
 The Reasoned Schemer  (MIT Press, 2018)
 The Little Prover 
 Essentials of Programming Languages  (MIT Press, 3rd Ed. 2008)
 Scheme and the Art of Programming 
 Coordinated Computing: Tools and Techniques for Distributed Software 
 The Little Typer 
 The Little Learner  (MIT Press, 2023)

External links
 Daniel P. Friedman's Homepage
 The Little Schemer's Homepage 
 Cons should not evaluate its arguments, the technical report version
 Webpage of DanFest, the academic celebration of Friedman's 60th birthday in 2004
 "Dan Friedman—Cool Ideas", Guy Steele's keynote talk at DanFest reviewing Friedman's work

Programming language researchers
Indiana University faculty
1944 births
Living people