4 ms·
Apache Spark, Delta Lake are written Scala. Being JVM based, it has a large ecosystem. Scala seems like a better choice than F#.
by breadwinner 2y ago
Apache Spark, Delta Lake are written Scala. Being JVM based, it has a large ecosystem. Scala seems like a better choice than F#.
- raphinou 2y agoI'm sure it can be the better choice, but for me it was not. It seems there was some incompatibility between me and Scala. I find it such a complex language and I never managed to wrap my head around it. As I said F# was my last choice at the start of my evaluation, and Scala was high on the list due to the Java ecosystem. But in the end it didn't work out for me. F# on the JVM would be great though!
- apwell23 2y agoi've used scala for over 8 yrs everyday and i agree with your assessment. Even intellij has no idea sometimes about what the hell is going on. It throws up compile errors when there none.
- flakiness 2y agoIs F# easier to learn than Scala? (I know a bit of Scala (in the old 2.x days) but have no knowledge of F#.)
- raphinou 2y agoIt definitely was for me! The syntax is simple, it is functional first but is not pure. I started with zero experience with ml languages and got productive fast enough to enjoy it. Of course my early f# code could be improved, but it was working and while writing the code the language didn't feel like a barrier. One caveat though: it seems FP matches my way of thinking. As an example, I always liked recursion, while some others saw it as complexifying things. Try fsharp as fsx scripts to avoid boilerplate (see blog post linked in other comment) and you'll rapidly feel if you like it or not.
- neonsunset 2y agoAt least the tooling should be way nicer. It is way more of an OCaml language than Scala. Also much like having to deal with JVM ecosystem in Scala, you'd need to deal with .NET ecosystem in F#. In my opinion, the latter can be an advantage. F# has a lot of depth but you do not need to grasp it fully to be productive with it.
- ecshafer 2y agoI have done a bit of both Scala and F#, I think F# is a good bit easier to learn. Scala I think mixes OOP concepts and mutability in a bit less gracefully.
- spooneybarger 2y agoIt was for me.
- frakt0x90 2y agoI agree with you. I tried Scala for weeks and found it far too complex. Every line I wrote, I felt there were 5 different ways of doing it and I didn't know if I was choosing the right one. Scala tries to be too many things at once imo.
- hurril 2y agoIt runs on .NET, for god's sake. This is not a small platform.
- michaelcampbell 2y agoBasically everything runs on an OS, which is even more complex.
- jayd16 2y agoThey mean ecosystem.
- michaelcampbell 2y agoIs Frege still being developed?
- innocentoldguy 2y agoI think Clojure is the better option if you want to do FP using the JVM ecosystem. The problem (for me, anyway) I've run into with Scala is that it supports both functional programming and object-oriented programming. Every code base I've worked on in Scala has ended up being a hodgepodge of both, which I find annoying. However, the best functional programming language is, of course, Elixir. :D
- raphinou 2y agoElixir getting a strong type system is interesting, but watch out for gleam though But they still miss the computation expressions, which open interesting possibilities like https://github.com/CaptnCodr/Fli https://github.com/CaptnCodr/Fli and https://github.com/fsprojects/FsHttp https://github.com/fsprojects/FsHttp
- innocentoldguy 2y agoGleam lacks lisp-style macros, and its implementations of BEAM and OTP are not exhaustive. For example, Gleam does not support: - Hot updates. - Full distributed system support. – Low-level process manipulation. - Named processes. - Advanced supervision strategies. - Behaviours other than GenServer. - Type-safe distributed messaging. - And several other things that I value in BEAM and OTP. I can't justify trading the full power of BEAM and OTP for static typing. To be fair, though, I've written a lot of code in both statically and dynamically typed languages, and static typing isn't something I value much (to the point that you might say I don't care about it at all :D).
- raphinou 2y agoI knew otp was still suboptimal in gleam, but thanks for mentioning all these additional points! Funny how preferences and priorities vary among devs, I need my static type system! :-) But note even in static type systems there are variations. I'm talking about an hindley milner type system with its type inference like the one in fsharp
- felixyz 2y ago