2 Comments

Haskell isn't the only functional language... (I agree, Haskell has a limited ecosystem). What about Scala? Runs on the JVM, totally interoperable with any Java library, and a rich ecosystem. I spent about oh... close to a decade loving Scala and pushing back against anything else.

Not that I'd point to Scala as a model citizen of functional programming. Letting programmers freely mix Java and Scala, functional and non-functional... I've seen some really scary messes come of that...! Still it was my favorite for most of a decade.

Or, Elixir. Elegant, powerful, one of the oldest and most robust runtimes out there (built on Erlang, which dates back to the 80's). Rock solid, efficient, and pure... and a very rich ecosystem.

I've been doing functional programming for so long anything else is just painful. I can't think procedurally anymore, at least not without grumbling about it full time. :) But map, filter, reduce... if that's the extent of functional programming you've experienced, I think you're missing the bigger picture. The idea of programming without side effects. Using recursion for everything. True language-level pattern matching... it's elegant. Just like a pure equation.

If you haven't played with Elixir give it a shot. It might change your opinion.

Expand full comment

It's true, haskell doesn't have a monopoly on functional programming or on its other killing feature: making people feel smart (C++ anybody?)

- Scala's great, but is it a functional programming language?

- Elixir's cool but haven't seen it much...why is that?

> But map, filter, reduce... if that's the extent of functional programming you've experienced, I

If you like purely functional programs, you might like my very first post, RLWs

https://codefaster.substack.com/p/rlws

where i talk about how you can decompose programs into mostly functionally pure ones! Very powerful technique.

They might not be internally pure, but externally they are so you get all the benefits for fast coding.

ex. the function x => {

const y = x+x

return y

}

is not internally pure (y) but externally pure (no side effects).

Expand full comment