Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Thank you for saying that. I regularly attend the International Conference on Functional Programming, which grew out of the LISP and Functional Programming conference. Except for the Scheme Workshop, which is the reason I attend, it might as well be called the International Conference on Static Types. Almost all of the benefits of functional programming come from functional programming itself, not from static types, but one would never get that impression from the papers presented there. The types are all that anyone talks about.


I get your point about ICFP drifting into “types, types, types.” I don’t think FP benefits are only static typing or immutability, pure-ish core/imperative shell, and explicit effects matter a lot even in dynamic languages.

My angle was narrower: static types + ADTs improve the engineering loop (refactors, code review, test construction) by turning whole classes of mistakes into compiler errors. That’s not “what FP is”, it’s one very effective reliability layer that many FP ecosystems emphasize.


Static types and ADTs are orthogonal to being FP, as Rust clearly shows. But to speak in terms of FP when those are the important things for you is just wrong since even non FP languages now have ADT, including also mainstream languages like Java, Kotlin, Dart, C# and more.

Even purity is not something exclusive to FP, D and Nim also support separating pure from impure functions. And if you ask me, the reason not many other languages have support for that is that in practice, it has been demonstrated again and again that it’s just not nearly as useful as you may think. Effects, as in Unison and Flix, generalizes the concept to include many more concepts than just purity and may perhaps prove more useful in general purpose programming, but the jury is still out on this.


Take a look at Algebraic Effects concept, I think you would like it.


That’s the “effects” I am referring to. Did you think it was something else? Is there other effects systems?


Help me with a tl;dr here, but are effects just monads?


Great question! But no, they are not the same, despite some similarities.

In Unison, effects are called abilities, and they wrote a very good post explaining the differences!

https://www.unison-lang.org/docs/fundamentals/abilities/for-...

In summary: both have advantages and disadvantages. Which one is "better" depends on which factors you value more.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: