142-java-functional-programming
/142-java-functional-programming
Use when you need to apply functional programming principles in Java — including writing immutable objects and Records, pure functions, functional interfaces, lambda expressions, Stream API pipelines, Optional for null safety, function composition, higher-order functions, pattern matching for instanceof and switch, sealed classes/interfaces for controlled hierarchies, Stream Gatherers for custom operations, currying/partial application, effect boundary separation, and concurrent-safe functional patterns. This should trigger for requests such as Improve the code with Functional Programming; App
- Author
- jabrena ↗
- Repository
- cursor-rules-java ↗
- Licence
- Apache-2.0
- Last repository change
- 13.11.2026
Assessment and security
- Files in this package
- 2
- Scripts
- 0
- HTML comments
- 0
- URLs in SKILL.md
- 0
No signals detected. Repository changed on 13.11.2026, without references to retired models or APIs.
Apache-2.0, otwarta: można używać i zmieniać, z zachowaniem licencji i informacji o zmianach.
What it does and when to use it
Use when you need to apply functional programming principles in Java — including writing immutable objects and Records, pure functions, functional interfaces, lambda expressions, Stream API pipelines, Optional for null safety, function composition, higher-order functions, pattern matching for instanceof and switch, sealed classes/interfaces for controlled hierarchies, Stream Gatherers for custom operations, currying/partial application, effect boundary separation, and concurrent-safe functional patterns. This should trigger for requests such as Improve the code with Functional Programming; App
Original author description
Use when you need to apply functional programming principles in Java — including writing immutable objects and Records, pure functions, functional interfaces, lambda expressions, Stream API pipelines, Optional for null safety, function composition, higher-order functions, pattern matching for instanceof and switch, sealed classes/interfaces for controlled hierarchies, Stream Gatherers for custom operations, currying/partial application, effect boundary separation, and concurrent-safe functional patterns. This should trigger for requests such as Improve the code with Functional Programming; App
How it works
- Constraints
- When to use this skill
- Workflow
- Reference
SKILL.md preview
--- name: 142-java-functional-programming description: Use when you need to apply functional programming principles in Java — including writing immutable objects and Records, pure functions, functional interfaces, lambda expressions, Stream API pipelines, Optional for null safety, function composition, higher-order functions, pattern matching for instanceof and switch, sealed classes/interfaces for controlled hierarchies, Stream Gatherers for custom operations, currying/partial application, effect boundary separation, and concurrent-safe functional patterns. This should trigger for requests such as Improve the code with Functional Programming; Apply Functional Programming; Refactor the code with Functional Programming; Refactor Java code to use streams or Optionals safely; Improve immutability and pure functions in Java. Part of Plinth Toolkit license: Apache-2.0 metadata: author: Juan Antonio Breña Moral version: 0.19.0 --- # Java Functional Programming rules Identify and apply functional programming principles in Java to improve immutability, expressiveness, and maintainability. **What is covered in this Skill?** - Immutable objects and Records (JEP 395) - Pure functions free of side effects - Functional interfaces: `Function`, `Predicate`, `Consumer`, `Supplier`, custom `@FunctionalInterface` - Lambda expressions and method references - Stream API: filter/map/reduce pipelines, parallel streams, `toUnmodifiable*` collectors - `Optional` idiomatic usage: `map`/`flatMap`/`filter`/`orElse*` over `isPresent()`+`get()` - Function composition: `andThen`/`compose` - Higher-order functions: memoization, currying, partial application - Pattern Matching for `instanceof` and `switch` (Java 21) - Sealed classes and interfaces (Java 17) for exhaustive domain hierarchies - Switch Expressions (Java 14), Stream Gatherers (JEP 461) - Effect-boundary separation: side effects at edges, pure core logic - Immutable collections: `List.of()`, `Collectors.toUnmodifiableList()` **Scope:** The reference is organized by examples (good/bad code patterns) for each core area. Apply recommendations based on applicable examples. ## Constraints Before applying any functional programming changes, ensure the project compiles. If compilation fails, stop immediately — do not proceed until the project compiles successfully. Verify that maven-compiler-plugin source/target supports the Java features being used. - **MANDATORY**: Run `./mvnw compile` or `mvn compile` before applying any changes - **SAFETY**: If compilation fails, stop immediately — do not proceed until the project compiles successfully - **VERIFY**: Verify maven-compiler-plugin source/target supports the Java features being used - **VERIFY**: Run `./mvnw clean verify` or `mvn clean verify` after applying improvements - **BEFORE APPLYING**: Read the reference for detailed good/bad examples, constraints, and safeguards for each functional programming pattern - **EDGE CASE**: If request scope is ambiguous, stop and ask a clarifying question before applying changes - **EDGE CASE**: If required inputs, files, or tooling are missing, report what is missing and ask whether to proceed with setup guidance ## When to use this skill - Improve the code with Functional Programming - Apply Functional Programming - Refactor the code with Functional Programming - Refactor Java code to use streams or Optionals safely - Improve immutability and pure functions in Java ## Workflow 1. **Compile project before functional refactoring** Run `./mvnw compile` or `mvn compile` and stop immediately if compilation fails. 2. **Confirm Java feature compatibility** Verify maven-compiler-plugin source/target supports the functional features planned for adoption. 3. **Read functional-programming reference and assess code** Read `references/142-java-functional-programming.md` and identify opportunities for immutability, pure functions, and functional composition. 4. **Apply functional programming improvements** Implement selected functional refactorings while keeping side effects at boundaries. 5. **Verify with full build** Run `./mvnw clean verify` or `mvn clean verify` after applying improvements. ## Reference For detailed guidance, examples, and constraints, see [references/142-java-functional-programming.md](references/142-java-functional-programming.md).
Files in this package (2)
- SKILL.md 4 KB
- references/142-java-functional-programming.md 43 KB
Versions
The database has no other skills named 142-java-functional-programming.
Database snapshot: 13.11.2026 · package version fb2c498f87fd (SHA-256 digest of the entire package)
Downloads in the last 30 days: 0 · ranking
Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.
Similar skills
- 100144-java-data-oriented-programming
Use when you need to apply data-oriented programming best practices in Java — including separating code (behavior) from data structures using records, designing immutable data with pure transformation functions, keeping data flat and denormalized with ID-based references,… - 100curryfy
Use when applying function currying and partial application patterns in C# to create specialized, reusable function compositions. USE FOR: function currying, partial application, function composition, creating specialized functions from general ones, builder-like functional APIs… - 100java-conventions
Modern Java idioms for any JVM project (Java 17+): records, sealed types, text blocks, pattern matching, Optional discipline, streams, immutability, null safety, package layout, var usage, and code organisation. Apply when the project is a Java 17+ project. Stack-agnostic —… - 100functional-programming
Use when applying functional programming patterns and principles in C# including immutability, pure functions, higher-order functions, and monadic patterns. USE FOR: functional programming concepts in C#, immutability patterns, pure functions, LINQ as functional operations,… - 100143-java-functional-exception-handling
Use when you need to apply functional exception handling best practices in Java — including replacing exception overuse with Optional and VAVR Either types, designing error type hierarchies using sealed classes and enums, implementing monadic error composition pipelines,… - 100java
Use when writing, reviewing or refactoring modern Java (21+, 25 LTS) — records and sealed interfaces as algebraic data types, exhaustive pattern-matching switch over instanceof ladders, virtual-thread concurrency, structured concurrency and ScopedValue replacing ThreadLocal,…