| name | functional-programming |
| description | Use when writing functional code - covers FP best practices (Lea differs from traditional FP languages) |
Functional Programming Best Practices
Quick Start
-- Prefer pure functions and immutable data
let double = (x) -> x * 2
[1, 2, 3] /> map(double) /> filter((x) -> x > 2)
Core Principles
- Immutability: Use
let by default, maybe only when mutation is necessary
- Pure functions: No side effects, same input always produces same output
- Composition: Build complex behavior from simple, composable functions
- Higher-order functions: Pass functions as arguments, return functions
Lea-Specific Warnings
Lea differs from traditional FP languages:
- No currying - Use placeholders:
5 /> add(3, input)
- Pipes prepend -
x /> fn(a) becomes fn(x, a)
- Mutable bindings -
maybe allows mutation; avoid unless necessary
- No monads - Async uses
#async decorator instead
- Opt-in types - Add
:: Type :> ReturnType, use #strict for enforcement
Notes
- Prefer
let over maybe
- Use pipelines (
/>) for left-to-right data flow
- Callbacks receive
(element, index)