4 ms·
Or Rust. Or D. Or Ruby. Or C#. Or Dylan. Or Lua. Or OCaml. Lots of languages have concepts from multiple paradigms. What is the correct mix of concepts is up f
by saosebastiao 13y ago
Or Rust. Or D. Or Ruby. Or C#. Or Dylan. Or Lua. Or OCaml.
Lots of languages have concepts from multiple paradigms. What is the correct mix of concepts is up for debate.
I honestly believe that Rust has the potential to become the perfect mix for me, but OCaml and D are pretty good second places with the benefit of exponentially greater stability/maturity.
- platz 13y agoSure, a lot of those languages (Ruby, C#, Lua) borrow some FP ideas, but I think sprinkling in some FP ideas is different from F#, OCaml, and Scala where FP seems to be more "font-and-center".
- jes5199 13y agoMy litmus test for whether a language really succesfully marries OO and FP is: how well does a language blend pattern matching syntax and inheritance? OCaml - basically only gives you pattern matching on primitive types. Object types end up having dramatically different code style Scala - any syntax that deals with types quickly becomes so complicated that you can't explain it to non-experts I don't know much about F#. I've heard that Clojure's core.match grants pattern matching over abstract interfaces in a nice style. It's not an official part of the language, yet, though.
- platz 13y agoThis is a nice point to think about, thanks - I'll have to do some noodling on this.
- chris-martin 13y agoWhat is complex about Scala's pattern matching? x matches the value x, x:A matches instances of A, A(x) matches if A.unapply(x) evaluates to a Some, and _ matches anything. Erasure throws a wrench into it, but otherwise it's pretty straightforward.