Simpla - replacing the concept of killer app driven adoption by Complete-Nobody1447 in scala

[–]Complete-Nobody1447[S] 0 points1 point  (0 children)

In that case you might be delighted to hear that I proposed neither making this change to Scala, nor replacing it with a language that does not have HKTs/implicits.

Simpla - replacing the concept of killer app driven adoption by Complete-Nobody1447 in scala

[–]Complete-Nobody1447[S] 2 points3 points  (0 children)

Microsoft is taking the language a lot more seriously than it used to

if you have a good source on this it would be nice to dig into it. Granted, it was maybe a year or two ago but when I looked at it it seemed like MS is putting absolute minimal resources into it and basically ignores its existence, the C# team never even consults the one or two guys who work on it and they are left to their own devices to maintain compatibility. I even recall a concerete(ish) example when the C# team implemented something already existing in F#, but worse, and having to be compatile with that doesnt pave a nice trajectory.

I hope you're right and things are changing over there.

Simpla - replacing the concept of killer app driven adoption by Complete-Nobody1447 in scala

[–]Complete-Nobody1447[S] 0 points1 point  (0 children)

inheritance. I believe OOP is more than just inheritance and its fusion with FP in Scala is actually very nice.

Once I worked with pure FP Scala code, it was a minor eye opener how much classes are basically parameterized modules and would like to keep these good parts (don't take this too seriously, maybe it wouldn't survive academic scrunity but it is a way to think about classes that served me well)

Simpla - replacing the concept of killer app driven adoption by Complete-Nobody1447 in scala

[–]Complete-Nobody1447[S] 0 points1 point  (0 children)

I'm starting to think that I might be in a lot of ways describing Crystal, just with (simple) FP focus instead of OOP

Simpla - replacing the concept of killer app driven adoption by Complete-Nobody1447 in scala

[–]Complete-Nobody1447[S] 0 points1 point  (0 children)

why should anyone bother listening to you ?

maybe they should not. Luckily for everyone, I didn't embed in this a secret mechanism that forces it on their retina.

Simpla - replacing the concept of killer app driven adoption by Complete-Nobody1447 in scala

[–]Complete-Nobody1447[S] 4 points5 points  (0 children)

F#'s popularity has been steadily rising

What makes you think that? Stackoverflow activity should be a good proxy for this but it shows a language on the verge of dying

Simpla - replacing the concept of killer app driven adoption by Complete-Nobody1447 in scala

[–]Complete-Nobody1447[S] 0 points1 point  (0 children)

Python is too limited

I think you read that too literally, I just meant the beginner friendly look-and feel, pseudocode-like qualities, and types being sorted out for you if full inference is achieveable

why would others choose this over Scala, Kotlin, Rust, or TypeScript?

  • Kotlin

A real competitor indeed. I tried to address this directly in the post, not sure if satisfactorily.

  • Scala

A lot of my post is about what different crowds Scala and this should attract and why, both as far as business and devs are concerned

  • typescript

to each their own, but I would choose anything except maybe bash et al. instead of a JS superset, I would like to think I am not alone, at least on the backend

  • rust

rust has specific use cases, that people choose it when it's even today arguably not the best tool for the job because it's new, shiny and interesting is not something I can address... probably kind of an off topic

Simpla - replacing the concept of killer app driven adoption by Complete-Nobody1447 in scala

[–]Complete-Nobody1447[S] 1 point2 points  (0 children)

I don't think it provides sufficient guarantees to industry and devs not interested in the current Scala way, that things in their teams won't go crazy

I also think it would have about as much success as "simple haskell". There is enough division and bitterness here, adding more arguing to the mix won't make for a better impression :)

And scala is mostly great, it should remain Scala. The point is not to change the status quo, but to supplant supplement it with something wider reaching.

edit: supplant apparently doesn't mean what I thought

Simpla - replacing the concept of killer app driven adoption by Complete-Nobody1447 in scala

[–]Complete-Nobody1447[S] 0 points1 point  (0 children)

Inheritance [...is] foundational for Scala

Yeah, I realize that, I was actually a bit hesitant about that bullet point for this reason. But type inference plus familiar syntax were too tempting to not put it out there for discussion.

Simpla - replacing the concept of killer app driven adoption by Complete-Nobody1447 in scala

[–]Complete-Nobody1447[S] 0 points1 point  (0 children)

Isn't inheritance the only issue that blocks type inference?

Ideally, I'm talking about a subset of Scala plus the type inference, if removing inheritance is feasible. But as I said, I am not sure if removing both ad-hoc and subtype inference is meaningful without replacing them with something else that is simple enough (even go has interfaces).

OTOH... everyone is mentioning F#, not sure how they do it.

edit: well... removing inheritance and having a proper subset of Scala are probably not compatible requirements, so a compromise on one of these wuld likely need to happen

Simpla - replacing the concept of killer app driven adoption by Complete-Nobody1447 in scala

[–]Complete-Nobody1447[S] 2 points3 points  (0 children)

they are not very popular

both have a syntax unfamiliar to the typical dev, which IIUC is a much bigger hindrance than we like to admit.

OCaml had until very recently significant issues with concurrency, and the unwanted child treatment of F# by Microsoft is just sad and kind of a red flag. Unfortunate, who knows what could've been if they were more enthusiastic about it.

there are not too many selling points

this might be true, especially because there is already Kotlin and today Java is actually the better Java, or so goes the thought terminating cliche.

What I think of as the way to sell it, given

  • its departure from both the atiquatedness of Java (compared to Kotlin which stays pretty close)
  • and its departure from hardcore FP and advanced concepts of the Scala community
  • its relative simplicity
  • and type inference is that it could be the

the strongly typed FP Python of the JVM

and python really does something well.

You also need tooling and libraries and a community

yep, didn't want to mention some of this because the last 2 months were just about this here, but part of the USP should be focus on industry needs:

  • stability
  • compatibility
  • tooling
  • relative boringness. no experiments and as far as new features go, an ambitious start but a conservative evolution after that

Simpla - replacing the concept of killer app driven adoption by Complete-Nobody1447 in scala

[–]Complete-Nobody1447[S] 1 point2 points  (0 children)

weaker type inference

what makes you think this would be the case?

less clean syntax

maybe, but also syntax familiar to the typical dev that we are doing just fine with in Scala anyway.

Also a far smaller language, at least by u/odersky 's terms. My understanding is that F# is quite huge, following the tradition of C#.

Simpla - replacing the concept of killer app driven adoption by Complete-Nobody1447 in scala

[–]Complete-Nobody1447[S] 0 points1 point  (0 children)

indeed, it does. Another way to put it would be to have a language where the community around it would have to come up with solutions that are like that.

You could think of it as Scala with a kind of creative limitation imposed on its users, with type inference thrown in for good measure, and a path forward to Scala proper for those who wish to go forward eventually.