Functional Thinking. Paradigm Over Syntax - Helion
ISBN: 978-14-493-6547-9
stron: 180, Format: ebook
Data wydania: 2014-06-30
Księgarnia: Helion
Cena książki: 118,15 zł (poprzednio: 137,38 zł)
Oszczędzasz: 14% (-19,23 zł)
If you’re familiar with functional programming basics and want to gain a much deeper understanding, this in-depth guide takes you beyond syntax and demonstrates how you need to think in a new way. Software architect Neal Ford shows intermediate to advanced developers how functional coding allows you to step back a level of abstraction so you can see your programming problem with greater clarity.
Each chapter shows you various examples of functional thinking, using numerous code examples from Java 8 and other JVM languages that include functional capabilities. This book may bend your mind, but you’ll come away with a much better grasp of functional programming concepts.
- Understand why many imperative languages are adding functional capabilities
- Compare functional and imperative solutions to common problems
- Examine ways to cede control of routine chores to the runtime
- Learn how memoization and laziness eliminate hand-crafted solutions
- Explore functional approaches to design patterns and code reuse
- View real-world examples of functional thinking with Java 8, and in functional architectures and web frameworks
- Learn the pros and cons of living in a paradigmatically richer world
If you’re new to functional programming, check out Josh Backfield’s book Becoming Functional.
Osoby które kupowały "Functional Thinking. Paradigm Over Syntax", wybierały także:
- Windows Media Center. Domowe centrum rozrywki 66,67 zł, (8,00 zł -88%)
- Ruby on Rails. Ćwiczenia 18,75 zł, (3,00 zł -84%)
- Przywództwo w świecie VUCA. Jak być skutecznym liderem w niepewnym środowisku 58,64 zł, (12,90 zł -78%)
- Scrum. O zwinnym zarządzaniu projektami. Wydanie II rozszerzone 58,64 zł, (12,90 zł -78%)
- Od hierarchii do turkusu, czyli jak zarządzać w XXI wieku 58,64 zł, (12,90 zł -78%)
Spis treści
Functional Thinking. Paradigm Over Syntax eBook -- spis treści
- Functional Thinking
- Preface
- Chapter Overview
- Conventions Used in This Book
- Using Code Examples
- Safari Books Online
- How to Contact Us
- Acknowledgments
- 1. Why
- Shifting Paradigms
- Aligning with Language Trends
- Ceding Control to the Language/Runtime
- Concision
- 2. Shift
- A Common Example
- Imperative Processing
- Functional Processing
- Case Study: Number Classification
- Imperative Number Classification
- Slightly More Functional Number Classification
- Java 8 Number Classifier
- Functional Java Number Classifier
- Common Building Blocks
- Filter
- Map
- Fold/Reduce
- Synonym Suffering
- Filter
- Scala
- Groovy
- Clojure
- Map
- Scala
- Groovy
- Clojure
- Fold/Reduce
- Scala
- Groovy
- Clojure
- Filter
- A Common Example
- 3. Cede
- Iteration to Higher-Order Functions
- Closures
- Currying and Partial Application
- Definitions and Distinctions
- In Groovy
- In Clojure
- Scala
- Currying
- Partially applied functions
- Partial (constrained) functions
- Common Uses
- Function factories
- Template Method design pattern
- Implicit values
- Recursion
- Seeing Lists Differently
- Streams and Work Reordering
- 4. Smarter, Not Harder
- Memoization
- Caching
- Method-level caching
- Caching sum
- Caching everything
- Adding Memoization
- Caching
- Laziness
- Lazy Iterator in Java
- Totally Lazy Number Classifier
- Lazy Lists in Groovy
- Lazy list of perfect numbers
- Building a Lazy List
- Benefits of Laziness
- Lazy Field Initialization
- Memoization
- 5. Evolve
- Few Data Structures, Many Operations
- Bending the Language Toward the Problem
- Rethinking Dispatch
- Improving Dispatch with Groovy
- Clojures Bendable Language
- Clojure Multimethods and a la carte Polymorphism
- Operator Overloading
- Groovy
- Scala
- Functional Data Structures
- Functional Error Handling
- The Either Class
- Parsing Roman numerals
- Lazy parsing and Functional Java
- Providing defaults
- Wrapping exceptions
- The Option Class
- Either Trees and Pattern Matching
- Scala pattern matching
- Either trees
- Pattern matching for tree traversal
- 6. Advance
- Design Patterns in Functional Languages
- Function-Level Reuse
- Template Method
- Strategy
- The Flyweight Design Pattern and Memoization
- Factory and Currying
- Structural Versus Functional Reuse
- Code Reuse Via Structure
- Refactoring to eliminate duplication
- Code reuse via composition
- Code Reuse Via Structure
- 7. Practical Thinking
- Java 8
- Functional Interfaces
- Optional
- Java 8 Streams
- Functional Infrastructure
- Architecture
- CQRS
- Web Frameworks
- Databases
- Architecture
- Java 8
- 8. Polyglot and Polyparadigm
- Combining Functional with Metaprogramming
- Mapping Data Types with Metaprogramming
- Infinite Streams with Functional Java and Groovy
- Consequences of Multiparadigm Languages
- Context Versus Composition
- Functional Pyramid
- Index
- Colophon
- Copyright