Daniel P Friedman and Matthias Felleisen's books

Daniel Paul Friedman (born 1944) is a professor of Computer Science…

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,” [1] 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).

In the 1980s, Friedman turned to the study of Scheme. He explored the use of macros for defining programming languages; with Kohlbecker, Felleisen, and Duba, he co-introduced the notion of “hygienic macros” in a 1986 LFP paper that is still widely cited today.[2] With Haynes and Wand, he simultaneously studied the nature of continuation objects, their uses, and the possibilities of constraining them.[3] Following that, Friedman and Felleisen introduced a lambda calculus with continuations and control operators.[4] Their work has spawned work on semantics, connections between classical logic and computation, and practical extensions of continuations.

Friedman is also the lead author of Essentials of Programming Languages, a text book on programming languages. As such, it changed the landscape of language text books in the 1980s, shifting the focus from surveys of languages to the study of principles via series of interpreters. Today's text books on this topic tend to follow this organization, though use 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 Reasoned Schemer (with Byrd and Kiselyov), explaining logic programming via an extension of Scheme.