Good AI Tools

>> .claude/skills/functional-programming

stars: 2
forks: 0
watches: 2
last updated: 2025-12-10 15:38:23

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)