Best of Functional ProgrammingDecember 2025

  1. 1
    Article
    Avatar of freekFREEK.DEV·21w

    Partial Function Application is coming in PHP 8.6

    PHP 8.6 will introduce Partial Function Application, a feature that allows developers to create pre-configured callables by providing some arguments upfront while using placeholders for others. This functional programming technique enables more flexible function composition and reusability.

  2. 2
    Article
    Avatar of Marmelabmarmelab·25w

    TypeScript Types as a Programming Language

    TypeScript's type system is Turing complete and can be approached as a programming language. Generic types function like type-level functions, conditional types enable branching logic with the extends keyword, the infer keyword acts as variable assignment for extracting types, recursion allows iteration over arrays and complex structures, template literals enable string manipulation at the type level, and mapped types provide iteration over object properties. These capabilities enable creating sophisticated type utilities like CRUD generators, middleware type inference, and dynamic method generation that reduce code duplication while improving type safety and IDE autocomplete.

  3. 3
    Article
    Avatar of elixirstatusElixirStatus·24w

    State of Elixir 2025

    Over 1,000 Elixir developers participated in the 2025 State of Elixir survey, revealing a senior-heavy community (median 13+ years experience) that values concurrency, fault tolerance, and developer joy. Phoenix and LiveView dominate the ecosystem, with most teams running small deployments (1-5 nodes) in compact teams. While Elixir delivers strong business impact through reliability and faster delivery, hiring remains challenging. The community prioritizes LSP stability, type system completion, and native tooling over new features, with particular gaps in UI components and AI/ML integration.

  4. 4
    Article
    Avatar of hnHacker News·21w

    The Compiler Is Your Best Friend, Stop Lying to It

    Compilers are powerful tools that developers often underutilize by "lying" through null values, unchecked exceptions, type casts, and untracked side-effects. By making implicit assumptions explicit in the type system—using Option types instead of null, Result types for errors, sealed/union types instead of casts, and separating pure functions from side-effects—developers enable the compiler to catch bugs at compile-time rather than in production. Techniques like typed wrappers for domain concepts, union types for modeling valid states, and encoding guarantees as types transform the compiler from an adversary into a collaborative partner that tracks invariants, guides refactoring, and prevents entire classes of runtime errors.