Amazon cover image
Image from Amazon.com
Image from Coce

Functional and concurrent programming : core concepts and features /

By: Contributor(s): Material type: TextTextPublisher: Boston, Massachusetts : Addison-Wesley, Pearson Education, Inc., [2023]Copyright date: ©2023Description: xxxvii, 475 pages : illustrations ; 23 cmContent type:
  • text
Media type:
  • unmediated
Carrier type:
  • volume
ISBN:
  • 9780137466542
  • 0137466544
Subject(s): DDC classification:
  • 005.1 CHF 23
Contents:
Star ratings
    Average rating: 0.0 (0 votes)
Holdings
Item type Current library Collection Call number Status Barcode
Book Non-borrowing Book Non-borrowing Library D Information Technology 005.1 CHF (Browse shelf(Opens below)) Not For Loan 1004849
Book Book Library D Information Technology 005.1 CHF (Browse shelf(Opens below)) Available 1004850
Total holds: 0

Includes glossary.

Includes bibliographical references and index.

Chapter 1: Concepts of Functional Programming -- What Is Functional Programming? -- Functions -- From Functions to Functional Programming Concepts -- Summary -- Chapter 2: Functions in Programming Languages -- Defining Functions -- Composing Functions -- Functions Defined as Methods -- Operators Defined as Methods -- Extension Methods -- Local Functions -- Repeated Arguments -- Optional Arguments -- Named Arguments -- Type Parameters -- Summary -- Chapter 3: Immutability -- Pure and Impure Functions -- Actions -- Expressions Versus Statements -- Functional Variables -- Immutable Objects -- Implementation of Mutable State -- Functional Lists -- Hybrid Designs -- Updating Collections of Mutable/Immutable Objects -- Summary -- Chapter 4: Case Study: Active–Passive Sets -- Object-Oriented Design -- Functional Values -- Functional Objects -- Summary -- Chapter 5: Pattern Matching and Algebraic Data Types -- Functional Switch -- Tuples -- Options -- Revisiting Functional Lists -- Trees -- Illustration: List Zipper -- Extractors -- Summary -- Chapter 6: Recursive Programming -- The Need for Recursion -- Recursive Algorithms -- Key Principles of Recursive Algorithms -- Recursive Structures -- Tail Recursion -- Examples of Tail Recursive Functions -- Summary -- Chapter 7: Recursion on Lists -- Recursive Algorithms as Equalities -- Traversing Lists -- Returning Lists -- Building Lists from the Execution Stack -- Recursion on Multiple/Nested Lists -- Recursion on Sublists Other Than the Tail -- Building Lists in Reverse Order -- Illustration: Sorting -- Building Lists Efficiently -- Summary -- Chapter 8: Case Study: Binary Search Trees -- Binary Search Trees -- Sets of Integers as Binary Search Trees -- Implementation Without Rebalancing -- Self-Balancing Trees -- Summary -- Chapter 9: Higher-Order Functions -- Functions as Values -- Currying -- Function Literals -- Functions Versus Methods -- Single-Abstract-Method Interfaces -- Partial Application -- Closures -- Inversion of Control -- Summary -- Chapter 10: Standard Higher-Order Functions -- Functions with Predicate Arguments -- map and foreach -- flatMap -- fold and reduce -- iterate, tabulate, and unfold -- sortWith, sortBy, maxBy, and minBy -- groupBy and groupMap -- Implementing Standard Higher-Order Functions -- foreach, map, flatMap, and for-Comprehensions -- Summary -- Chapter 11: Case Study: File Systems as Trees -- Design Overview -- A Node-Searching Helper Function -- String Representation -- Building Trees -- Querying -- Navigation -- Tree Zipper -- Summary -- Chapter 12: Lazy Evaluation -- Delayed Evaluation of Arguments -- By-Name Arguments -- Control Abstraction -- Internal Domain-Specific Languages -- Streams as Lazily Evaluated Lists -- Streams as Pipelines -- Streams as Infinite Data Structures -- Iterators -- Lists, Streams, Iterators, and Views -- Delayed Evaluation of Fields and Local Variables -- Illustration: Subset-Sum -- Summary -- Chapter 13: Handling Failures -- Exceptions and Special Values -- Using Option -- Using Try -- Using Either -- Higher-Order Functions and Pipelines -- Summary -- Chapter 14: Case Study: Trampolines -- Tail-Call Optimization -- Trampolines for Tail-Calls -- Tail-Call Optimization in Java -- Dealing with Non-Tail-Calls -- Summary -- Chapter 15: Types (and Related Concepts) -- Typing Strategies -- Types as Sets -- Types as Services -- Abstract Data Types -- Type Inference -- Subtypes -- Polymorphism -- Type Variance -- Type Bounds -- Type Classes -- Summary -- Chapter 16: Concepts of Concurrent Programming -- Non-sequential Programs -- Concurrent Programming Concepts -- Summary -- Chapter 17: Threads and Nondeterminism -- Threads of Execution -- Creating Threads Using Lambda Expressions -- Nondeterminism of Multithreaded Programs -- Thread Termination -- Testing and Debugging Multithreaded Programs -- Summary -- Chapter 18: Atomicity and Locking -- Atomicity -- Non-atomic Operations -- Atomic Operations and Non-atomic Composition -- Locking -- Intrinsic Locks -- Choosing Locking Targets -- Summary -- Chapter 19: Thread-Safe Objects -- Immutable Objects -- Encapsulating Synchronization Policies -- Avoiding Reference Escape -- Public and Private Locks -- Leveraging Immutable Types -- Thread-Safety -- Summary -- Chapter 20: Case Study: Thread-Safe Queue -- Queues as Pairs of Lists -- Single Public Lock Implementation -- Single Private Lock Implementation -- Applying Lock Splitting -- Summary -- Chapter 21: Thread Pools -- Fire-and-Forget Asynchronous Execution -- Illustration: Parallel Server -- Different Types of Thread Pools -- Parallel Collections -- Summary -- Chapter 22: Synchronization -- Illustration of the Need for Synchronization -- Synchronizers -- Deadlocks -- Debugging Deadlocks with Thread Dumps -- The Java Memory Model -- Summary -- Chapter 23: Common Synchronizers -- Locks -- Latches and Barriers -- Semaphores -- Conditions -- Blocking Queues -- Summary -- Chapter 24: Case Study: Parallel Execution -- Sequential Reference Implementation -- One New Thread per Task -- Bounded Number of Threads -- Dedicated Thread Pool -- Shared Thread Pool -- Bounded Thread Pool -- Parallel Collections -- Asynchronous Task Submission Using Conditions -- Two-Semaphore Implementation -- Summary -- Chapter 25: Futures and Promises -- Functional Tasks -- Futures as Synchronizers -- Timeouts, Failures, and Cancellation -- Future Variants -- Promises -- Illustration: Thread-Safe Caching -- Summary -- Chapter 26: Functional-Concurrent Programming -- Correctness and Performance Issues with Blocking -- Callbacks -- Higher-Order Functions on Futures -- Function flatMap on Futures -- Illustration: Parallel Server Revisited -- Functional-Concurrent Programming Patterns -- Summary -- Chapter 27: Minimizing Thread Blocking -- Atomic Operations -- Lock-Free Data Structures -- Fork/Join Pools -- Asynchronous Programming -- Actors -- Reactive Streams -- Non-blocking Synchronization -- Summary -- Chapter 28: Case Study: Parallel Strategies -- Problem Definition -- Sequential Implementation with Timeout -- Parallel Implementation Using invokeAny -- Parallel Implementation Using CompletionService -- Asynchronous Implementation with Scala Futures -- Asynchronous Implementation with CompletableFuture -- Caching Results from Strategies -- Summary -- Appendix A: Features of Java and Kotlin -- Functions in Java and Kotlin -- Immutability -- Pattern Matching and Algebraic Data Types -- Recursive Programming -- Higher-Order Functions -- Lazy Evaluation -- Handling Failures -- Types -- Threads -- Atomicity and Locking -- Thread-Safe Objects -- Thread Pools -- Synchronization -- Futures and Functional-Concurrent Programming -- Minimizing Thread Blocking -- Glossary -- Index.

There are no comments on this title.

to post a comment.
Share