Skip to main content
Version: v2.2.82 (latest)
Recipes · Overview

Practical Recipes.

Real-world patterns and solutions for common functional programming tasks. Complete, runnable examples for error handling, data processing, I/O, and more.

// Error handling
5
Validation, retry, recovery, fallback, accumulation.
// Data processing
4
Transform, filter, aggregate, parse data.
// I/O operations
3
Files, HTTP, parallel tasks.
01

Error Handling.

Learn how to handle errors functionally:

Validation

Validate data with composable validators. Build complex validation logic from simple rules.

Topics: Input validation, form validation, business rules, validation combinators

Recovery

Recover from errors gracefully. Provide fallbacks and alternative paths.

Topics: Error recovery, fallback values, alternative computations, graceful degradation

Retry

Implement retry logic for transient failures. Configure retry strategies.

Topics: Exponential backoff, retry policies, circuit breakers, timeout handling

02

Data Processing.

Transform and process data functionally:

Transformation

Transform data structures with map, filter, and reduce. Build data pipelines.

Topics: Data mapping, filtering, reducing, pipeline composition

Filtering & Mapping

Filter collections with predicates. Combine multiple filter conditions.

Topics: Predicate composition, complex filters, partition, takeWhile, dropWhile

Aggregation

Aggregate data with monoids and semigroups. Compute statistics and summaries.

Topics: Sum, product, min, max, average, grouping, statistical aggregation

Parsing

Parse structured data safely. Handle parsing errors functionally.

Topics: JSON parsing, CSV parsing, parser combinators, validation during parsing

03

I/O Operations.

Handle side effects and I/O functionally:

File Operations

Read and write files with proper error handling. Manage file resources safely.

Topics: File reading, file writing, resource management, bracket pattern, streaming

HTTP Requests

Make HTTP requests with retry logic and error handling. Build resilient API clients.

Topics: REST APIs, retry logic, circuit breaker, rate limiting, request composition

Parallel Tasks

Execute tasks in parallel safely. Coordinate concurrent operations.

Topics: Concurrency, worker pools, parallel map, race conditions, synchronization

04

Composition Patterns.

Compose complex operations from simple ones:

Dependency Injection

Inject dependencies using the Reader pattern. Build testable applications.

Topics: Reader monad, dependency injection, testing, mocking, service architecture

Pipelines

Build data processing pipelines. Compose operations with pipe and flow.

Topics: Pipe, flow, composition, data pipelines, transformation chains

Middleware

Create composable middleware for HTTP handlers. Build middleware stacks.

Topics: HTTP middleware, composition, logging, authentication, error handling

05

Testing Patterns.

Test functional code effectively:

Testing Pure Functions

Test pure functions with property-based testing. Verify function laws.

Topics: Unit testing, property-based testing, test generation, function laws

Testing Effects

Test effectful code with IO and IOEither. Mock dependencies and side effects.

Topics: IO testing, mocking, integration testing, test doubles, dependency injection