Hacker News new | ask | show | jobs
by anonymoushn 1330 days ago
What sorts of features do you mean? I explained how I would achieve the desired thing. It's been a good decade since I used Scala.
1 comments

Sorry, I'm not sure what you are asking me to explain - I didn't use the term features at all. Can you elaborate?
What features of Scala allow the claimed things that are missing from other languages? Can you provide an example?
It's the typeclasses that allow orphan instances.

For instance, let's say a library uses this interfaces:

    def doSomething[F[_]: Monad](param: F[Param]): F[Result] = ...
This allows to provide the effect on the callsite. This could simply by "Id (which means regulary executed code) or it could be async, an error type, something with logging or a combination of all those and more at the same type. The library doesn't know and doesn't care, it only constraints the interface if it needs to.
More precisely, since the concept of typeclasses is modeled in Scala using values, it is a bit more powerful and expressive (but also harder to use correctly) than for example Haskells counterpart.

And to add more: typeclasses are usually not enough here, you also need higher kinded types or the whole thing is useless for a lot of meaningful abstractions (such as dealing with errors or async code).