Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

There are better options on the tooling. Eclipse rather than IDEA, Maven rather than SBT. Not perfect by any means, and the compiler is slow, but good enough to work with day-to-day.

The library ecosystem is growing every day, and the community is starting to recognize the importance of good documentation. See e.g. the Cats project, with a big emphasis on that.

Code readability in general, rough edges, and things that are difficult for newcomers to read incrementally are precisely why I'm so worried about the syntax being frozen.



Is Eclipse (Scala IDE) better than IntelliJ now? About a year ago people convinced me to switch to IntelliJ because Scala IDE was totally unusable, full of spurious compilation errors and useless refactor that introduced random symbols instead of doing its job.

So has the situation been reversed now?


Eclipse still has problems, its refactoring doesn't really work, and the UI locks up every so often, but its compiler is substantially more reliable than IntelliJ's. It's a case of picking your poison really.


Maven is a hug step backwards. SBT has its issues, but maven is god awful. Going forward though on new project, I plan on using Gradle. I find it a lot easier to work with than SBT.


At least you can find documentation on Maven :/ The biggest problem with operator-heavy syntax? Google searches.


What operator syntax?


e.g. :+= and :++= (which are both commonly used in build.sbt files). If you don't know the difference between those it's rather hard to search for.


Nono! Typesafe, I mean Lightbend, declared that random strings of symbols are just method names, so no need to worry about that operator overloading thing! Except methods with ":" in the name tend to work differently wrt. precedence.

(Look, I'm not on a crusade against Typesafe/Lightbend, but they've been hugely disingenous on a lot of things like this. I could have accepted it if they'd just said "yes, it's operator overloading, but better". Instead they chose this ridiculous disingenuous "nono, it's just method names!" approach. In my book, the only people who can get away get arbitrary method/function naming are the LISP/Scheme people. Because in LISP/Scheme there is no precedence to worry about.)


I have never seen them. Do they actually exist?

Most of the time, there is := (set something), += (add something) and ++= (add multiple things). I think that's pretty straight-forward.


Yes, they're very common in build.sbt files. How else would you add library dependencies?

I know exactly what they do; the underlying reasoning is very consistent, maybe even elegant. But if you don't know and need to understand/modify a build.sbt file, it's very tricky to find out.


> How else would you add library dependencies?

Like this?

  libraryDependencies ++= Seq(...)


Ok, so what's the difference between that and

    libraryDependencies :++= Seq(...)
? Because I've definitely seen that in some build.sbt files.


This doesn't exist:

    error: value :++= is not a member of sbt.TaskKey[Seq[sbt.ModuleID]]




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: