198 karma · joined April 10, 2011
The above has been said repeatedly by Martin Odersky (creator of Scala) and the folks on the Scala compiler team in talks and discussions.
Using "sbt ~run" (re-runs your program automatically at every file change) may also be an option.
I'm not judging which one is better, just acknowledging the culture difference.
Also, even simplifying it, it still seems overcomplicated. The returning type: Future[Try[Option[(String, ByteString)]]] is too much. Can't you remove the Try or the Option? Futures can already hold either a Sucess or Failure, so isn't the Try redundant?
Also, his opinion on Options seems to forget its advantage that the compiler won't let you use a "nullable" object without proper care. It is the main thing about it.
From the talk, it seems that he was new to Scala, didn't properly understand its concepts, wrote a bunch of spaguetti code and then blamed the language.
Maybe I've waited too long too many times for gcc to compile C/C++ that when I went to Scala I thought waiting some seconds to compile is okay =P
You can still have the exact same Futures functionality in Java, but they will be so much more verbose and annoying to use that it ends up not being a good idea.
I guess this is something that will settle down eventually. And programmers will stop using so much random symbols instead of English.
For the specific case of Lists, I don't think is that much trouble. It is the most important class of the language. You better get used to it anyway.