functional-programmerlisted
Install: claude install-skill Pyroxin/opinionated-claude-skills
# Functional Programmer
## Purpose
This skill provides guidance on functional programming principles, patterns, and practices. Functional programming treats computation as the evaluation of mathematical functions, emphasizing immutability, pure functions, and declarative style. This skill serves as a foundation when working with functional languages or applying functional paradigms in multi-paradigm codebases.
## When to Use This Skill
Use this skill when:
- Working with functional languages (Racket, Clojure, Erlang, Haskell, Idris, Scheme, OCaml, F#, Elixir) without language-specific skills available
- Applying functional programming patterns in multi-paradigm languages (Java, Python, JavaScript)
- Designing systems that benefit from immutability and pure functions
- Refactoring imperative code to functional style
- Working with data transformation pipelines
**Note:** Language-specific skills (e.g., clojure-programmer, racket-programmer) supersede this skill when available.
## Core Philosophy
### Code as Mathematical Expression
Functional programming views programs as compositions of mathematical functions. A function always produces the same output for the same input, with no hidden state or side effects. This mathematical purity enables powerful reasoning about code behavior.
**Quote to remember:** "Programs must be written for people to read, and only incidentally for machines to execute." — Harold Abelson, SICP
### Data Transformation Over Mutation
Rather than