Scala Functional Programming Patterns

Grok and perform effective functional programming in Scala
Preview in Mapt

Scala Functional Programming Patterns

Atul S. Khot

1 customer reviews
Grok and perform effective functional programming in Scala

Quick links: > What will you learn?> Table of content> Product reviews

eBook
$5.00
RRP $39.99
Save 87%
Print + eBook
$49.99
RRP $49.99
What do I get with a Mapt Pro subscription?
  • Unlimited access to all Packt’s 5,000+ eBooks and Videos
  • Early Access content, Progress Tracking, and Assessments
  • 1 Free eBook or Video to download and keep every month after trial
What do I get with an eBook?
  • Download this book in EPUB, PDF, MOBI formats
  • DRM FREE - read and interact with your content when you want, where you want, and how you want
  • Access this title in the Mapt reader
What do I get with Print & eBook?
  • Get a paperback copy of the book delivered to you
  • Download this book in EPUB, PDF, MOBI formats
  • DRM FREE - read and interact with your content when you want, where you want, and how you want
  • Access this title in the Mapt reader
What do I get with a Video?
  • Download this Video course in MP4 format
  • DRM FREE - read and interact with your content when you want, where you want, and how you want
  • Access this title in the Mapt reader
$5.00
$49.99
RRP $39.99
RRP $49.99
eBook
Print + eBook

Frequently bought together


Scala Functional Programming Patterns Book Cover
Scala Functional Programming Patterns
$ 39.99
$ 5.00
Scala Design Patterns Book Cover
Scala Design Patterns
$ 43.99
$ 5.00
Buy 2 for $10.00
Save $73.98
Add to Cart

Book Details

ISBN 139781783985845
Paperback298 pages

Book Description

Scala is used to construct elegant class hierarchies for maximum code reuse and extensibility and to implement their behavior using higher-order functions. Its functional programming (FP) features are a boon to help you design “easy to reason about” systems to control the growing software complexities. Knowing how and where to apply the many Scala techniques is challenging. Looking at Scala best practices in the context of what you already know helps you grasp these concepts quickly, and helps you see where and why to use them.

This book begins with the rationale behind patterns to help you understand where and why each pattern is applied. You will discover what tail recursion brings to your table and will get an understanding of how to create solutions without mutations. We then explain the concept of memorization and infinite sequences for on-demand computation. Further, the book takes you through Scala’s stackable traits and dependency injection, a popular technique to produce loosely-coupled software systems.

You will also explore how to currying favors to your code and how to simplify it by de-construction via pattern matching. We also show you how to do pipeline transformations using higher order functions such as the pipes and filters pattern. Then we guide you through the increasing importance of concurrent programming and the pitfalls of traditional code concurrency. Lastly, the book takes a paradigm shift to show you the different techniques that functional programming brings to your plate.

This book is an invaluable source to help you understand and perform functional programming and solve common programming problems using Scala’s programming patterns.

Table of Contents

Chapter 1: Grokking the Functional Way
Abstractions
Concise expression
Functions
Immutable
Referential transparency
The problem – grouping continuous integers
Scala idioms
Patterns and those aha! moments
Summary
Chapter 2: Singletons, Factories, and Builders
Singletons – being one and only one
Null Objects – singletons in another garb
Scala singletons
Builders
Summary
Chapter 3: Recursion and Chasing your Own Tail
Recursive structures
Pattern matching
Tail recursion to the rescue
Getting the nth element of a list
An expression parser
Persistent data structures
Two forms of recursion
Summary
Chapter 4: Lazy Sequences – Being Lazy, Being Good
Illusion and reality – the proxy pattern
Hibernate's lazy loading
Lazy val – calling by need
Infinite sequences – Scala streams
Recursive streams
Memoization and the flyweight pattern
Call by name
Streams are collections
Sieve of Eratosthenes
A view to a collection
Summary
Chapter 5: Taming Multiple Inheritance with Traits
The iterator design pattern
Interfaces as types
The dreaded diamond
Traits – Scala's rich interfaces
Mix-ins – rich interfaces
Frills and thrills – the decorator pattern
Scala's easy and breezy decorations – stackable modifications
Dependencies injection pattern
A taste of the cake pattern
Sealed traits
Defeating the dreaded diamond
Summary
Chapter 6: Currying Favors with Your Code
Functions as first-class values
Roping in a scope
Local functions – hiding and biding their time
The underscore – Scala's Swiss army knife
A taste of the curry
The loan pattern
Serving the curry
Frills and thrills – decorators again
Wrapping it up
Summary
Chapter 7: Of Visitors and Chains of Responsibilities
A tale of two hierarchies
The Visitor pattern
Partial functions
The chain of responsibility
Summary
Chapter 8: Traversals – Mapping/Filtering/Folding/Reducing
Iterating the Scala way
A validation problem
Foreach–sugary sweetener
Monads
Reduce
Summary
Chapter 9: Higher Order Functions
The strategy design pattern
A strategy in Scala land
Functors
Monads
FlatMap
Monoids
An inverted index
Pipes and filters
Pipes and filters – the Scala version
It is a Monoid
Lazy collections
Summary
Chapter 10: Actors and Message Passing
The recursive grep
The producer/consumer pattern
Threads – masters and slaves
Events
Immutability is golden
Akka actors take the stage
Summary
Chapter 11: It's a Paradigm Shift
Verbosity
Sorting it out!
Functional error handling
Threads and futures
Parser combinators
Summary

What You Will Learn

  • Get to know about functional programming and the value Scala's FP idioms bring to the table
  • Solve day-to-day programming problems using functional programming idioms
  • Cut down the boiler-plate and express patterns simply and elegantly using Scala's concise syntax
  • Tame system complexity by reducing the moving parts
  • Write easier to reason about concurrent code using the actor paradigm and the Akka library
  • Apply recursive thinking and understand how to create solutions without mutation
  • Reuse existing code to compose new behavior
  • Combine the object-oriented and functional programming approaches for effective programming using Scala

Authors

Table of Contents

Chapter 1: Grokking the Functional Way
Abstractions
Concise expression
Functions
Immutable
Referential transparency
The problem – grouping continuous integers
Scala idioms
Patterns and those aha! moments
Summary
Chapter 2: Singletons, Factories, and Builders
Singletons – being one and only one
Null Objects – singletons in another garb
Scala singletons
Builders
Summary
Chapter 3: Recursion and Chasing your Own Tail
Recursive structures
Pattern matching
Tail recursion to the rescue
Getting the nth element of a list
An expression parser
Persistent data structures
Two forms of recursion
Summary
Chapter 4: Lazy Sequences – Being Lazy, Being Good
Illusion and reality – the proxy pattern
Hibernate's lazy loading
Lazy val – calling by need
Infinite sequences – Scala streams
Recursive streams
Memoization and the flyweight pattern
Call by name
Streams are collections
Sieve of Eratosthenes
A view to a collection
Summary
Chapter 5: Taming Multiple Inheritance with Traits
The iterator design pattern
Interfaces as types
The dreaded diamond
Traits – Scala's rich interfaces
Mix-ins – rich interfaces
Frills and thrills – the decorator pattern
Scala's easy and breezy decorations – stackable modifications
Dependencies injection pattern
A taste of the cake pattern
Sealed traits
Defeating the dreaded diamond
Summary
Chapter 6: Currying Favors with Your Code
Functions as first-class values
Roping in a scope
Local functions – hiding and biding their time
The underscore – Scala's Swiss army knife
A taste of the curry
The loan pattern
Serving the curry
Frills and thrills – decorators again
Wrapping it up
Summary
Chapter 7: Of Visitors and Chains of Responsibilities
A tale of two hierarchies
The Visitor pattern
Partial functions
The chain of responsibility
Summary
Chapter 8: Traversals – Mapping/Filtering/Folding/Reducing
Iterating the Scala way
A validation problem
Foreach–sugary sweetener
Monads
Reduce
Summary
Chapter 9: Higher Order Functions
The strategy design pattern
A strategy in Scala land
Functors
Monads
FlatMap
Monoids
An inverted index
Pipes and filters
Pipes and filters – the Scala version
It is a Monoid
Lazy collections
Summary
Chapter 10: Actors and Message Passing
The recursive grep
The producer/consumer pattern
Threads – masters and slaves
Events
Immutability is golden
Akka actors take the stage
Summary
Chapter 11: It's a Paradigm Shift
Verbosity
Sorting it out!
Functional error handling
Threads and futures
Parser combinators
Summary

Book Details

ISBN 139781783985845
Paperback298 pages
Read More
From 1 reviews

Read More Reviews

Recommended for You

Scala Design Patterns Book Cover
Scala Design Patterns
$ 43.99
$ 5.00
Building Applications with Scala Book Cover
Building Applications with Scala
$ 39.99
$ 5.00
Scala for Data Science Book Cover
Scala for Data Science
$ 43.99
$ 5.00
Scala Test-Driven Development Book Cover
Scala Test-Driven Development
$ 31.99
$ 5.00
Scala High Performance Programming Book Cover
Scala High Performance Programming
$ 35.99
$ 5.00
Scala Data Analysis Cookbook Book Cover
Scala Data Analysis Cookbook
$ 35.99
$ 5.00