Six months of using Scala and Lift
jeppenejsum.wordpress.com
jeppenejsum.wordpress.com
Like Clojure, Scala could be a universal programming language for me if it was not for the learning curve: I have invested so many years on Lisp, Java, and Ruby that it is difficult to motivate myself to become proficient with 2 more languages.
Anyway, both the article and the comments to the article were interesting.
Considering you can use any java class in Scala or Clojure, I find them fairly easy to migrate to (though clojure is much more challenging due to the syntax and more pure functional nature).
The main thing I found is that there are a lot more syntactic constructions you have to be familiar with than in most other languages, because Scala borrows a lot from ML-like functional languages but doesn't really leave much out from Java, and then adds a few things along the way.
I wonder why the sbaz (Scala-Bazaar package manager) is not the default, rather than maven.
I looked at Lift a year or two ago and this was the showstopper for me. While there's a cleanliness and purity to rigidly enforced templating I have never developed a web app where I didn't need some kind of creative "UI" logic somewhere. If you can't put it in the templates then it doesn't go away ... it goes into your core code where the poor schmuck looking at the template has no hope of doing anything with it. For me, putting what is otherwise pure UI logic in the UI layer is a lesser evil than having it permeate back to the middle tier or "view" code layer.
def sum = series.map(_.sum).foldLeft(0.0)(_+_)
Gah, no, stop. Remember, kids: everytime you use naive map-reduce for floating point arithmetic operations, God kills a kitten.http://en.wikipedia.org/wiki/Floating_point#Accuracy_problem...
edit: You're write jfager. I didn't read the article I linked to very carefully. The article actually has an example algorithm, the Kahan sum, for reducing the error caused by summing floating point numbers in a loop!