Jump to ratings and reviews
Rate this book

Functional Programming for the Object-Oriented Programmer

Rate this book
Many, many of the legendary programmers know many programming languages. What they know from one language helps them write better code in another one. But it’s not really the language that matters: adding knowledge of C# to your knowledge of Java doesn’t make you much better. The languages are too similar: they encourage you to look at problems in pretty much the same way. You need to know languages that conceptualize problems and solutions in substantially different ways.

Once upon a time, object-oriented programming was a radical departure from what most programmers knew. So learning it was both hard and mind-expanding. Nowadays, the OO style (or some approximation to it) is the dominant one, so ambitious people need to seek out different styles.

The functional programming style is nicely different from the OO style, but there are many interesting points of comparison between them. This book aims to teach you key elements of the functional style, helping you take them back to your OO language.

322 pages, ebook

First published January 1, 2012

20 people are currently reading
358 people want to read

About the author

Brian Marick

12 books6 followers
Brian Marick first learned to program in 1976, using the Tutor language. He has since done real programming in C, Common Lisp, Java, Ruby, Clojure, Elixir, and Elm. Much of his career, though, has been spent consulting, first on software testing, then–after he lucked into being one of the authors of the Manifesto for Agile Software Development–on testing and programming on Agile teams. He's written four books, three of which you can still buy: The Craft of Software Testing (horribly out of date), Everyday Scripting with Ruby, and Functional Programming for the Object-Oriented Programmer (almost entirely about dynamically-typed functional languages). He's currently trying to make a modest living writing webapps for schools of veterinary medicine, deliberately using advanced languages and techniques so that he has real-world examples to use in books, training, and consulting.

Ratings & Reviews

What do you think?
Rate this book

Friends & Following

Create a free account to discover what your friends think of this book!

Community Reviews

5 stars
16 (21%)
4 stars
35 (46%)
3 stars
22 (28%)
2 stars
2 (2%)
1 star
1 (1%)
Displaying 1 - 9 of 9 reviews
Profile Image for Helio.
15 reviews3 followers
April 23, 2018
This book was written by the Midje’s author. This lib is one of the main options for testing in Clojure. Some well-known people in software development industry has endorsed this book.

FP-OOP book starts with a quick Clojure intro. Then, it goes to an OOP implementation using Clojure. It’s theoretical and don’t connect OOP programmer with the language, ending this chapter without any conclusion whatsoever. Later, he introduces some FP concepts focusing in Clojure which give to the reader more context. Following chapters keep diving into FP techniques without giving much explanation about Clojure API. In the end, he wraps up talking about Monad API in Clojure and some “optional” chapters.

I’d recommend this book for who already have experience with Clojure API and some Ruby/Python or Java exp.

This material is very theoretical and there is no intent to serve as Clojure nor FP introduction material. I would recommend to people with more experience who would like to improve his/her knowledge by analysing the author’s theoretical examples/experiments.

It is an great material for dive into FP theory applied to Lisp, yet complex and ‘unpractical’.

This book contains a lot of exercises which could be a plus for some people.
Profile Image for Jan Ryswyck.
Author 2 books18 followers
August 23, 2013
This book tries to explain functional programming with a lot of code examples using Clojure. Although the first chapter introduces the reader to Clojure (which was very enlighting), the fact that this was my first adventure into the language got constantly in my way of understanding the bigger picture. After reading this book halfway through, I was totally lost. Perhaps picking up another book on Clojure before reading this book is a much better approach in order to get the most out of it.
Profile Image for Hugo Lopes Tavares.
Author 1 book5 followers
July 15, 2019
This book is OOP applied to the book Structure and Interpretation of Computer Programs (SICP). It's interesting to see how OOP can be applied in a language that doesn't support constructs such as classes.
13 reviews
September 26, 2020
Strange book. Only read through it because a friend recommended it. After reading it, I wouldn’t
Profile Image for Nathan.
50 reviews11 followers
June 7, 2013
A great intro to functional programming. The overall organization is good, and I liked the level of detail for an introductory book. Marick does a good job of systematically introducing functional principles through theory, well-constructed examples, and exercises. The book uses Clojure for most of its examples, and although it is a bit frustrating when you're reading along about a concept and then hit something along the lines of "hold on, now I have to teach you some new Clojure syntax," it probably works better than trying to front-load all of the language constructs would have. Marick is also enthusiastic and convincing about the merits of functional programming without being all fanboy about it.

In one other note, Chapter 7, which deals with the "flow" of functional-style programs, seemed to be the most important chapter, to me. Consequently, perhaps, it was also the most difficult for me. Interestingly, I made some significant mental progress when I read the chapter backward. I think I (unsurprisingly) just need more time with functional programming to feel comfortable thinking the right way.
Profile Image for Mike Arvela.
174 reviews12 followers
October 13, 2012


Read the unfinished version. Loved the parts with simple, concrete examples, but the "this is how you would implement Java in Clojure" parts felt too superficial and extensive to be enjoyable.
Profile Image for Rahul.
1 review
July 20, 2013
Book has some good insights into the world of functional programming.

Though I found most of the later exercises and code examples to be very hard to understand (specially if you are not ware of functional techniques)
Displaying 1 - 9 of 9 reviews

Can't find what you're looking for?

Get help and learn more about the design.