News for hackers. Stuff that matters.
Re:‘Woof’, a pure Scala 3 logging library by weego on Saturday December 18, 2021 @02:02PM (#29607436)
Having been primarily a Scala dev for the last 12 years I feel like people have slowly lost their minds over what pragmatic FP in Scala should be.

People are willingly recreating the Java situation of 'I don't know the project yet but I know we need Spring!' with these ridiculous libraries from Haskell zealots for no obvious benefit.

The ergonomics of this lib out of the box are literally worse for no reason, and worse than most other existing logging libs, because of it

Re:‘Woof’, a pure Scala 3 logging library by foobiekr on Saturday December 18, 2021 @02:19PM (#29607627)
As an observer of this exact phenomenon, I suggest that it is due to the culture that comes with scala. In any given scala-centric organization, there's going to eventually be someone who has mastered the art of talking High Scala. Unless there is someone equally skilled on both dimensions (persuasion and SW eng), and unfortunately, someone approximately as senior, then there is an interative game where added abstraction and complexity become the primary way to distinguish yourself as a "real" engineer.

This happens outside of scala shops, and I've seen it there, too, especially in C++ shops, but scala seems to attract these people.

Re:‘Woof’, a pure Scala 3 logging library by the_af on Saturday December 18, 2021 @02:49PM (#29607900)
Erik Meijer, one of the early practitioners and contributors of Scala, and a coauthor of Odersky's Coursera courses on Scala, believes that

"Mostly Functional Programming Doesn't Work" [1]

Note it's "mostly functional" that doesn't work, not functional. He believes you have to go all in to reap its benefits, other way you're just deluding yourself with another faddish "miracle cure".

All of the above are Meijer's opinions, I'm just the messenger. I know Odersky doesn't share these opinions.

My own opinion: I'm unsure. Though I wonder, these days if you're not a strong FP advocate, and instead look to Scala as an improved Java, why not use Kotlin instead?

[1] https://queue.acm.org/detail.cfm?id=2611829

Re:‘Woof’, a pure Scala 3 logging library by pjmlp on Saturday December 18, 2021 @04:11PM (#29608550)
Erik Meijer has also brought FP into .NET via VB, a couple of years before Scala was relevant, or F# started to actually matter.

So in a sense, he also tried a miracle cure before changing his mind.

Re:‘Woof’, a pure Scala 3 logging library by the_af on Saturday December 18, 2021 @04:19PM (#29608618)
I don't count it against him that he changed his mind. Changing his mind through experience makes sense to me :)
Re:‘Woof’, a pure Scala 3 logging library by flowcont on Saturday December 18, 2021 @04:04PM (#29608476)
I'm at one of such organisations and you have concisely described the situation.
Re:‘Woof’, a pure Scala 3 logging library by darksaints on Saturday December 18, 2021 @02:47PM (#29607884)
This problem with the scala community exists because it is composed of two different philosophical schools of thought. There's the ML camp, which is where we get all of the awesome pragmatic features of the ML family of languages (Martin Odersky has been very clear that Scala is philosophically an ML-family language).

And then we get the Haskell camp, which rightly determined that the Haskell ecosystem was terrible. But instead of adopting an ML mindset of pragmatic functional programming, they decided to bring along their puritan religiosity with them and make the Scala ecosystem terrible too.

The funny thing about Scala's pure functional programming ecosystem is that in its quest to make all programs pure in the sense of not having side effects, they pollute the entire ecosystem with hordes of incompatible dependencies, which need all sorts of bullshit adapters to make them play nice with each other. A far cry from what most people think of with the word "pure".

To quote one of the best essays on the ML philosophy:

> My point is that the ML module system can be deployed by you to impose the sorts of effect segregation imposed on you by default in Haskell. There is nothing special about Haskell that makes this possible, and nothing special about ML that inhibits it. It’s all a mode of use of modules.

> So why don’t we do this by default? Because it’s not such a great idea. Yes, I know it sounds wonderful at first, but then you realize that it’s pretty horrible. Once you’re in the IO monad, you’re stuck there forever, and are reduced to Algol-style imperative programming. You cannot easily convert between functional and monadic style without a radical restructuring of code. And you are deprived of the useful concept of a benign effect.

https://existentialtype.wordpress.com/2011/05/01/of-course-m...

Re:‘Woof’, a pure Scala 3 logging library by the_af on Saturday December 18, 2021 @04:26PM (#29608678)
Note Robert Harper, the author of Existential Type and one of the big names in ML, has a bizarre crusade against Haskell.

I find it weird that so many of his articles seem to be lashing out against (the internet perception) of Haskell, almost a popularity contest between ML and Haskell, when the adoption of either language is marginal and could use some cooperation between the two, instead of framing it as a zero-sum competition. ML and Haskell are allies, not enemies.

This obsession is a shame, since Robert Harper is obviously an intelligent person. I remember some of his feuds with people from the Haskell community were... embarrassing.

Most feuds are embarrassing. The proglang community could do with fewer of those.

I don't remember Simon Peyton Jones ever speaking ill of ML, for example. There's an example to follow!

Re:‘Woof’, a pure Scala 3 logging library by pjmlp on Saturday December 18, 2021 @04:08PM (#29608515)
Add to it the disease that all guest languages suffer from creating idiomatic wrappers instead of just directly calling into the rich ecosystem of the existing platform.
Re:‘Woof’, a pure Scala 3 logging library by fulafel on Sunday December 19, 2021 @08:16AM (#29613674)
In Clojure(Script) it seems to be a net positive because of the curation effect - the community generally has good taste in picking the good parts of the JVM/npm ecosystems and packaging those to for wide use. For example the de facto standard logging library doesn't use log4j but can interop with Java logging stuff and presents the same interface on both ClojureScript and JVM.

(Also many Java libraries have imperative APIs for no good reason, and it's sometimes the wrapper can present a functional interface)

Re:‘Woof’, a pure Scala 3 logging library by pjmlp on Sunday December 19, 2021 @09:07AM (#29614038)
The reason being that they are older than Java 8, and not everyone buys into functional styles.

Even on .NET, with LINQ having been introduced in .NET 3.5, there might come up some PR discussions that I will just give up and rewrite the code to the expectation level of the audience.

Re:‘Woof’, a pure Scala 3 logging library by darksaints on Saturday December 18, 2021 @04:36PM (#29608758)
That's true to some extent of the native language as well. Hibernate, for example, is a java(-bean) idiomatic wrapper on top of JDBC. Same goes for Log4J being a wrapper of java.util.logging, etc. Not quite the same thing as what Scala or Clojure have done, but far from just sticking to the basics.

It's one thing to build a wrapper on top of a comprehensive standard library, and another thing altogether to build what is essentially an alternative standard library.

Re:‘Woof’, a pure Scala 3 logging library by the_af on Saturday December 18, 2021 @05:07PM (#29609025)
I think calling Hibernate "a wrapper around JDBC" is overreaching. A wrapper brings to mind (at least to me) this idea of a thin layer, mostly a simple translator between two worlds, but in this case there's tons of added complexity and pitfalls on top of JDBC, and there's the whole ORM deal with attending object-relational impedance mismatch, the whole "ORM is the Vietnam of Computer Science", and a completely different can of worms!
Re:‘Woof’, a pure Scala 3 logging library by pjmlp on Sunday December 19, 2021 @05:02AM (#29612697)
Writing higher level abstractions for ease of use in same language as the platform is written on, and creating wrappers just because it looks "ugly" to do direct FFI calls to the host language isn't really the same thing.