🌀 scrumia-functional-programming
The Functional Programming paradigm, language-neutral — purity, totality, referential transparency, immutability by default, composition over inheritance, effect discipline.
slot · none version · 0.1.0
What it is responsible for
Six refusals that shape a codebase around the Functional Programming paradigm without naming one language's syntax. Impurity is refused past an unnamed boundary; a partial function whose signature accepts an input it cannot produce an output for is refused; an expression whose value depends on something its syntactic form does not name (a referential-transparency violation) is refused; mutation defaulting where an immutable value would have read the same and written less is refused; inheritance as the primary reuse mechanism where composition would have read as the smaller, more local choice is refused; effects described at the moment they run rather than as values the program composes before execution are refused. Ships a scrumia-functional-programming reference skill and a vocabulary check that enforces the rule fragments stay language-agnostic.
What it refuses
An impurity smuggled past a name-less boundary. A partial function whose signature accepts an input for which it cannot produce an output. A non-replaceable expression whose value depends on something its syntactic form does not name. A mutation that defaults where an immutable value would have read the same and written less. An inheritance relation reached for where composition would have read as the smaller, more local choice. Effects described at the moment they run rather than as values the program composes before execution. A rule fragment that can only be stated in one language's terms — that is a misplaced rule and belongs to the language's module.
The assumption it makes
Assumes the Functional Programming paradigm is one discipline whose wording holds across stacks — Kotlin, JavaScript, Rust, Scala, F#, Haskell and Swift — and any language that supports them. The cited languages are not exhaustive; the principle is paradigm-wide. Costs the friction of a vocabulary check on every rule fragment; pays back in a paradigm whose rules land with the same wording regardless of the language a project happens to be written in.
Its skills
scrumia-functional-programming
What it plugs into
| Register | Direction | Module |
|---|---|---|
find-spec | contributes | scrumia-specs |
implement | contributes | scrumia-github-project |
review | contributes | scrumia-github-project |
Install it
/plugin install scrumia-functional-programming@scrumia