# Functional Patterns (`fp`)
Laravel Pipeline-inspired functional utilities for composition and lazy evaluation.
## Features
- **Composition**: `pipe`, `compose`, `apply`
- **Side effects**: `tap`
- **Lazy evaluation**: `Lazy<T>`
- **Memoization**: `memoize`
- **Retry logic**: `retry`
- **Defaults**: `or_default`
## Quick Start
```rust
use rok_utils::fp::{pipe, compose, tap};
// Pipe - thread value through functions
let result = pipe(5, vec![|x| x + 1, |x| x * 2]);
// (5 + 1) * 2 = 12
// Compose - create new functions
```
## Tap (Side Effects)
```rust
use rok_utils::fp::tap;
let mut log = Vec::new();
```rust
use rok_utils::fp::memoize;
x * x
});
expensive(5); // Computes
expensive(5); // Uses cached result
expensive(3); // Computes new value
```
## Retry Logic
```rust
use rok_utils::fp::retry;
Ok("success")
} else {
Err("failed")
}
});
```
## Feature Flags
| `full` | Enable all features |
| `random` | Enable `shuffle` function |
## See Also
- [Main examples](../docs/examples.md)