7 ms·
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 s
by brabel 10mo ago
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.
- yunnpp 10mo agoHelp me with a tl;dr here, but are effects just monads?
- brabel 10mo agoGreat 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-monadically-inclined/ 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.
- rastrian 10mo agoTake a look at Algebraic Effects concept, I think you would like it.
- brabel 10mo agoThat’s the “effects” I am referring to. Did you think it was something else? Is there other effects systems?