Functional Declarative Design: A Comprehensive Methodology for Statically-Typed Functional Programming Languages

This page summarizes the projects mentioned and recommended in the original post on /r/haskell

SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • functional-declarative-design-methodology

    Article: Functional Declarative Design

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • sketches

    A Haskell blog

    but free monads are an effect system and not an ergonomic one. I have a post on how one can do the same with constraints as with Hierarchical Free Monads, except with less boilerplate.

  • polysemy

    :gemini: higher-order, no-boilerplate monads

    Thirdly, composing arbitrary effects without losing state is really, really difficult. Things are fine when you limit yourself to State and Reader, sure, but once you start with nondeterminism you’ll discover it’s shockingly easy to produce behaviors that are baffling unless you’ve spent a preposterous amount of time thinking about this stuff. (I’ve been bitten in prod by silent state-dropping bugs, and rarely have I been more flummoxed.) Consider this example, which produces silent changes in the semantics of <|> depending on whether you use it inside or outside of a higher-order effect. Every single effect library (besides the still-unreleased eff) gets certain combinations of effects + nondeterminism wrong. You could make the argument that most people don’t use nondeterministic monads, but eDSLs really shine when you have access to them, as you can turn a concrete interpreter to an abstract one fairly easily.

  • eff

    🚧 a work in progress effect system for Haskell 🚧 (by lexi-lambda)

    Thirdly, composing arbitrary effects without losing state is really, really difficult. Things are fine when you limit yourself to State and Reader, sure, but once you start with nondeterminism you’ll discover it’s shockingly easy to produce behaviors that are baffling unless you’ve spent a preposterous amount of time thinking about this stuff. (I’ve been bitten in prod by silent state-dropping bugs, and rarely have I been more flummoxed.) Consider this example, which produces silent changes in the semantics of <|> depending on whether you use it inside or outside of a higher-order effect. Every single effect library (besides the still-unreleased eff) gets certain combinations of effects + nondeterminism wrong. You could make the argument that most people don’t use nondeterministic monads, but eDSLs really shine when you have access to them, as you can turn a concrete interpreter to an abstract one fairly easily.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • C3 – The Ergonomic, Safe and Familiar Evolution of C

    2 projects | news.ycombinator.com | 3 Oct 2024
  • SwissTable: A High-Performance Hash Table Implementation

    3 projects | dev.to | 2 Oct 2024
  • Pledging $300k to the Zig Software Foundation

    6 projects | news.ycombinator.com | 1 Oct 2024
  • Ante: A low-level functional language with algebraic effects and safe shared mut

    1 project | news.ycombinator.com | 30 Sep 2024
  • The perils of transition to 64-bit time_t

    1 project | news.ycombinator.com | 29 Sep 2024