CARVIEW |
About This Title
Pages: 256
Published: November 2013
ISBN: 9781937785475
In Print
Functional Programming Patterns in Scala and Clojure
Write Lean Programs for the JVM
by Michael Bevilacqua-Linn
Solve real-life programming problems with a fraction of the code that pure object-oriented programming requires. Use Scala and Clojure to solve in-depth problems and see how familiar object-oriented patterns can become more concise with functional programming and patterns. Your code will be more declarative, with fewer bugs and lower maintenance costs.
eBook Formats:
PDF for desktop/tablets
epub for Apple Books, e-readers
mobi for Kindle readers
Get all eBook formats here for $27.95 (USD)
Paperback Formats:
Order via Bookshop (U.S. Only)
Please support indie bookstores!
Find indie bookstores in the U.S. Find indie bookstores around the world.
Functional languages have their own patterns that enable you to solve problems with less code than object-oriented programming alone. This book introduces you, the experienced Java programmer, to Scala and Clojure: practical, production-quality languages that run on the JVM and interoperate with existing Java. By using both the statically typed, type-inferred Scala and the dynamically typed, modern Lisp Clojure, you’ll gain a broad understanding of functional programming.
For each pattern, you’ll first see the traditional object-oriented solution, and then dig into the functional replacements in both Scala and Clojure. These patterns are common in the functional world and deserve to become part of your problem-solving toolkit. On the object-oriented side, you’ll see many common patterns, such as Command, Strategy, and Null Object. On the functional side, you’ll learn core functional patterns such as Memoization, Lazy Sequence, and Tail Recursion.
Each pattern helps you solve a common programming problem. Working through them gives you a set of patterns you can use to solve problems you come across while writing programs. Finally, you’ll learn how to work your existing Java code into new Scala or Clojure projects. You can start off small, adding functional code little by little, so you can complement your existing knowledge with Scala and Clojure as these languages gain popularity on the JVM.
Q&A with Michael Bevilacqua-Linn, author of Functional Programming Patterns in Scala and Clojure
Why did you write Functional Programming Patterns?
Languages with a functional flavor are getting more and more mainstream,
and I wanted to write something that would help folks with a lot of
traditional OO pattern knowledge start to make the transition.
I don’t know Scala or Clojure. How hard would it be for me
to understand the examples in the book?
This book is written for programmers who are new to Scala and Clojure,
but who have significant experience with Java and object-oriented
patterns. One of its goals is to help ease experienced object-oriented
programmers into a more functional style.
What can I do with functional patterns I couldn’t do before?
It’s not so much what you can do, as what you can do better! Functional
programming, and the patterns that go along with it, tends to be more
declarative than imperative programming, so you can solve problems with
code that’s both more straightforward and shorter. The functional focus
on immutable data reduces bugs in large programs, especially ones
involving concurrency.
Functional programming has no place in the object-oriented world, does
it?
While object-oriented programming and functional programming are often
seen as opposite paradigms, the truth is a bit more complex. Even Java
is getting more of a functional style with Java 8’s Lambdas. Scala
explicitly blends object-oriented and functional styles. While Clojure
is explicitly not object-oriented, it does borrow many good ideas from
the object-oriented world, such as polymorphism and programming to
interfaces.
Which one should I use? Scala or Clojure? What are the differences
and which would be easier to start with?
Scala tends to provide an easier on-ramp for object-oriented
programmers, as they can start working with it in a mainly
object-oriented style and transition to a more functional style as they
gain more experience. Scala also has a sophisticated static type
system, and blends object-oriented and functional programming together.
Clojure, on the other hand, is a modern, practical Lisp and comes with
the powerful macro system inherent to Lisps.
Both are excellent, general-purpose languages, but I have to confess that I prefer Clojure. I find that I can write clear, concise code it in much more easily than I can in any other language. However, knowing both will give you a very broad understanding of modern languages with a functional flavor.
5 tips when you dive into the functional programming world
Tip 1: Look for opportunities to replace object-oriented patterns with simpler functional language features.
Tip 2: Don’t be afraid to create functions that return functions.
Tip 3: Consider composing behaviors using higher order functions rather than building hierarchies.
Tip 4: Reach for higher order functions over collections before recursion.
Tip 5: You often don’t need mutability, even when you think you do! Try to find a higher order function that helps you transform an immutable data structure into a new, immutable data structure rather than modifying it in place.
What You Need
Clojure 1.5 and Scala 2.10.Optionally, Eclipse with plugins.
Resources
Releases:
- P2.0 2014/08/19
- P1.0 2013/11/12
- B7.0 2013/09/30
- B6.0 2013/09/10
Contents & Extracts
How This Book Is Organized
Pattern Template
Why Scala and Clojure
How To Read This Book
- Patterns And Functional Programming
- What Is Functional Programming
- Pattern Glossary
- Tinyweb: Patterns Working Together
excerpt
- Introducing Tinyweb
- Tinyweb In Java
- Tinyweb In Scala
- Tinyweb In Clojure
- Replacing Object Oriented Patterns
- Introduction
- Replacing Functional Interface
- Replacing State Carrying Functional Interface
- Replacing Command
excerpt
- Replacing Builder For Immutable Object
- Replacing Iterator
- Replacing Template Method
- Replacing Strategy
- Replacing Null Object
- Replacing Decorator
- Replacing Visitor
- Replacing Dependency Injection
- Functional Patterns
- Introduction
- Tail Recursion
excerpt
- Mutual Recursion
- Filter-Map-Reduce
- Chain of Operations
- Function Builder
- Memoization
- Lazy Sequence
- Focused Mutability
- Customized Control Flow
- Domain-Specific Language
- The End
Author
Michael Bevilacqua-Linn has been programming computers ever since he dragged an Apple IIGS into his fifth grade class to explain loops and variables to pre-teenagers. He works for Comcast, where he builds distributed systems that power infrastructure for their next generation services. In his spare time he likes rock climbing and good beer, though not at the same time. He blogs at mblinn.com.eBook Formats:
PDF for desktop/tablets
epub for Apple Books, e-readers
mobi for Kindle readers
Get all eBook formats here for $27.95 (USD)
Paperback Formats:
Order via Bookshop (U.S. Only)
Please support indie bookstores!
Find indie bookstores in the U.S. Find indie bookstores around the world.
Releases, Offers & More
Be the first to hear about our newest content, best promotions and upcoming events. Plus get 25% off your next purchase.
Related categories:
Related Titles:
About This Title
Pages: 256
Published: November 2013
ISBN: 9781937785475
Edition: 1
In Print