liveBook · Manning

Functional, stateless philosophy

Functional programming is a programming paradigm that expresses computation through the evaluation and composition of functions, typically favoring immutable data and minimizing mutable state and side effects.

How 19 Manning books explain it

Functional Programming in JavaScript

A programming paradigm that builds software by composing and transforming functions, typically emphasizing pure functions and immutable data over mutable state and side effects.

How it is used
Reframes JavaScript application design around functions to control growing shared-state complexity.
How deep it goes
Defines the style, contrasts imperative rewrites, and introduces decomposition, chains, composition, and reactive events without fully developing each technique.
Examples
Uses Hello World DOM output, counters, student display and SSN validation, enrollment grades, and collection transformations.
What you can do after
Apply functional techniques in JavaScript by decomposing tasks, composing functions, and chaining data transformations.

Read how Functional Programming in JavaScript explains functional, stateless philosophy →

Grokking Simplicity

A programming paradigm that emphasizes composing computations as evaluations of functions while minimizing mutable state and side effects.

How it is used
Organizes software by separating time-sensitive actions from stable calculations and inert data.
How deep it goes
Explains definitions, tradeoffs, and classification of code, then stops short of language-specific implementation details.
Examples
Uses a task-management service, email notifications, and distinctions among task data, notification calculations, and sending actions.
What you can do after
Diagnose/debug bugs by identifying actions, then apply extraction of calculations to improve testing, reuse, and understanding.

Read how Grokking Simplicity explains functional, stateless philosophy →

The Joy of JavaScript

A programming paradigm that models computation as the evaluation of functions, often emphasizing immutability and function composition.

How it is used
Recasts application calculations as pure transformations instead of loops that update shared state.
How deep it goes
Defines purity and works through a wallet-balance refactoring, while leaving broader functional programming beyond this treatment.
Examples
Uses block validation with filter, map, and reduce, then refactors a wallet-balance calculation from nested loops into an array pipeline.
What you can do after
Practice/perform a refactoring that extracts a pure balance calculation while retaining a delegating Wallet method.

Read how The Joy of JavaScript explains functional, stateless philosophy →

Functional Design and Architecture: Examples in Haskell

A programming approach that represents computation primarily through the evaluation and composition of functions, favoring immutable data and minimized side effects.

How it is used
Frames design choices that reduce complexity while improving reasoning about correctness, parallelism, and maintainability.
How deep it goes
Explains immutability, pure functions, effects, determinism, domain invariants, and functional interfaces through code examples.
Examples
Uses mapped name lists, nested Maybe values, pure calc and max functions, I/O routines, and FizzBuzz complexity contrasts.
What you can do after
Evaluate/understand when immutable, pure composition makes code more predictable, testable, and suitable for concurrent work.

Read how Functional Design and Architecture: Examples in Haskell explains functional, stateless philosophy →

Unit Testing Principles, Practices, and Patterns

Functional programming is a programming paradigm that expresses computation through mathematical functions and minimizes hidden inputs, hidden outputs, and mutable state.

How it is used
Supports output-based unit testing by making computation explicit and minimizing hidden behavior.
How deep it goes
Defines pure functions and functional architecture, but stops short of a deep functional-programming treatment.
Examples
Uses CalculateDiscount, Increment, and AddComment to contrast explicit computation with internal state and side effects.
What you can do after
Apply functional principles to separate business decisions from side effects and write more output-based tests.

Read how Unit Testing Principles, Practices, and Patterns explains functional, stateless philosophy →

The Art of Code

A programming style that combines function-oriented composition with declarations of desired results rather than procedural commands.

How it is used
Uses declarative transformations and pure functions to make data-flow intent visible and reduce hidden-state risks.
How deep it goes
Defines purity and referential transparency, then develops Java pipelines, laziness, and readability limits without treating functional style as universal.
Examples
Compares loops with stream pipelines, maps Optional values to a product price, and analyzes people under performance and memory constraints.
What you can do after
Apply it via Java streams, lambdas, Optional, and collectors to express clear transformations while judging when imperative code is clearer.

Read how The Art of Code explains functional, stateless philosophy →

Functional Programming in Scala, Second Edition

Functional design is the practice of structuring software around pure functions, immutable data, composition, and explicit effects.

How it is used
Organizes programs around pure cores while isolating I/O, errors, and other effects at their boundaries.
How deep it goes
Defines purity and side effects, explains substitution and explicit state, then extends the approach through library and I/O design.
Examples
Uses coffee charges, random number generation, integer summation, property-based testing, parser libraries, and stream processing.
What you can do after
Apply it by separating effects from pure calculations, modeling state explicitly, and composing small reusable functions.

Read how Functional Programming in Scala, Second Edition explains functional, stateless philosophy →

Learn Haskell by Example

Functional programming is a programming paradigm that treats computation primarily as the evaluation of functions and the transformation of values.

How it is used
Frames Haskell development as composing immutable transformations for safe, reusable, and reliable software.
How deep it goes
Defines declarative, immutable, and pure programming; enumerates forbidden effects while deferring their control through monadic programming.
Examples
Uses contrasting chocolate-cake recipes and later beginner tools, including word-ladder AI and CSV formatting, to ground the approach.
What you can do after
Evaluate/understand programs as value transformations and recognize when mutable state or direct effects conflict with purity.

Read how Learn Haskell by Example explains functional, stateless philosophy →

Deep Learning with JAX

A programming style centered on functions as values and minimal reliance on mutable state.

How it is used
Structures JAX machine-learning programs for explicit state, pure functions, and composable transformations.
How deep it goes
Explains purity, explicit state, immutability, and indexed updates, while deferring random-number details and control-flow habits.
Examples
Uses explicit neural-network state, JAX random state, and .at[] replacements for NumPy-style in-place updates.
What you can do after
Apply via JAX functions that pass parameters and state explicitly and replace mutation with functional array updates.

Read how Deep Learning with JAX explains functional, stateless philosophy →

F# in Action: A Revised Edition of Get Programming with F#

Functional programming is a programming paradigm that emphasizes composing computations as functions and minimizing mutable state and side effects.

How it is used
Frames F# application design around immutable data and stateless functions while retaining OO features for interop.
How deep it goes
Explains expressions, immutability, and data-behavior separation, while deferring pure functions, type classes, and higher-kinded types.
Examples
Uses an immutable retail basket, C# class consumption, HTTP request-response mapping, and a rewritten application slice.
What you can do after
Apply it by redesigning familiar modules around immutable values and expressions rather than mutable state and statements.

Read how F# in Action: A Revised Edition of Get Programming with F# explains functional, stateless philosophy →

The Art of Unit Testing 3e

A programming paradigm that emphasizes function composition, expressions, and minimizing mutable state and side effects.

How it is used
Uses functional design as one JavaScript approach for expressing unit-testing patterns.
How deep it goes
Contrasts functional and object-oriented choices, explaining benefits and learning costs without developing implementation internals.
Examples
Uses function-level dependency injection and mock injection as practical functional-design examples.
What you can do after
Apply functional or object-oriented designs selectively when breaking dependencies and injecting stubs or mocks.

Read how The Art of Unit Testing 3e explains functional, stateless philosophy →

C++ Concurrency in Action, Second Edition

Functional programming is a programming style that emphasizes computing results from inputs while avoiding mutable external state.

How it is used
Structures concurrent tasks around their inputs and future-delivered results instead of direct shared-data exchange.
How deep it goes
Defines pure functions and relates them to concurrency, then demonstrates future-based Quicksort without developing a broad functional-programming toolkit.
Examples
Uses mathematical functions, basic arithmetic, and sequential and future-based Quicksort examples.
What you can do after
Apply via C++ futures to pass task results between threads without explicit shared-data access.

Read how C++ Concurrency in Action, Second Edition explains functional, stateless philosophy →

The Well-Grounded Rubyist, Fourth Edition

A functional language is a programming language that emphasizes computation through functions and minimizes mutable state and side effects.

How it is used
Frames functional programming as a style for writing predictable code and weighing design trade-offs alongside object-oriented programming.
How deep it goes
Defines pure functions and referential transparency, then illustrates mutation, exceptions, currying, and lazy sequences without deep mathematical treatment.
Examples
Contrasts reassigning an incremented variable with creating a new one, and demonstrates curried functions and lazy infinite sequences.
What you can do after
Apply currying and lazy enumerators to create reusable functions that process finite portions of infinite sequences.

Read how The Well-Grounded Rubyist, Fourth Edition explains functional, stateless philosophy →

Kotlin in Action, 2E

Functional programming treats computation primarily as the evaluation and composition of functions, often emphasizing immutable data and limited side effects.

How it is used
Uses functions, immutable values, and collection operations to make Kotlin code concise, reusable, testable, and safer for concurrent development.
How deep it goes
Defines first-class functions, immutability, and pure functions, then demonstrates lambdas and collection operations without descending into implementation internals.
Examples
Uses a button listener lambda and a message pipeline applying filter, map, distinct, and sortedBy.
What you can do after
Apply it via Kotlin lambdas and standard collection functions to compose behavior and express data transformations.

Read how Kotlin in Action, 2E explains functional, stateless philosophy →

Python Workout: 50 ten-minute exercises

Functional programming is a programming paradigm that emphasizes composing functions, minimizing mutable state, and transforming inputs into outputs.

How it is used
Uses immutable data, short functions, and input-to-output transformations to make programs easier to test, debug, and maintain.
How deep it goes
Explains immutability, state avoidance, higher-order functions, map, filter, and comprehensions, but stops short of formal theory.
Examples
Demonstrates squared even numbers, word-length mapping, long-word filtering, and parallel letter-number multiplication.
What you can do after
Apply functional techniques through Python comprehensions, map, and filter to transform iterable data without direct mutation.

Read how Python Workout: 50 ten-minute exercises explains functional, stateless philosophy →

Go in Practice, Second Edition

Functional programming is a programming paradigm that emphasizes function composition, expressions, and controlled handling of state and side effects.

How it is used
Contrasts functional programming with Go’s intended state-passing concurrency and idiomatic style.
How deep it goes
Defines first-class functions and generic sequence operations, then stops at a pragmatic comparison rather than implementation guidance.
Examples
Uses generic sequence operations and Go’s pre-1.18 versus post-1.18 capabilities as contrastive examples.
What you can do after
Evaluate functional-style Go against idiomatic Go trade-offs.

Read how Go in Practice, Second Edition explains functional, stateless philosophy →

Julia as a Second Language

Functional programming is a programming paradigm that emphasizes expressions, function composition, and transformations of data with limited mutable state.

How it is used
Uses functional design to organize Julia programs around data transformations rather than state-changing object interactions.
How deep it goes
Defines functional programming pragmatically through concrete practices and data flow, without imposing a single strict definition.
Examples
Illustrates transformation with a snake-case-to-camel-case function and compares functional and object-oriented designs for an encryption service.
What you can do after
Evaluate/understand functional and object-oriented approaches to the same Julia problem, including when a functional approach may not fit.

Read how Julia as a Second Language explains functional, stateless philosophy →

Python Workout, Second Edition

Functional programming is a programming paradigm that emphasizes composing computations as functions and minimizing mutable state and side effects.

How it is used
Uses immutability, short functions, and function composition to make programs more reliable and maintainable.
How deep it goes
Explains the rationale for immutability and statelessness, then illustrates transformations with generator expressions and aggregation.
Examples
Uses an immutable Person replacement and Zoo queries that filter animals and sum their legs.
What you can do after
Apply functional techniques to write shorter functions with fewer state-dependent paths and easier testing.

Read how Python Workout, Second Edition explains functional, stateless philosophy →

Idiomatic Rust

Functional programming is a programming paradigm that emphasizes composing computations as functions and minimizing mutable state and side effects.

How it is used
Frames functional programming as a way to compose declarative functions while minimizing mutation and side effects in Rust.
How deep it goes
Defines the paradigm and surveys Rust’s high-level support through closures and iterators, while deferring a deeper treatment.
Examples
Uses I/O and local mutation as examples of side effects, and cites JavaScript and TypeScript as common users of closures.
What you can do after
Understand how immutability and pure functions support reasoning, testing, reuse, and deterministic behavior.

Read how Idiomatic Rust explains functional, stateless philosophy →

Related concepts

These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.