I've always been bothered by
Predef (
http://www.scala-lang.org/api/current/index.html#scala.Predef$). For the most part, I consider many of the implicits just part of the language. But
printf and
println really bother me. Calls to those functions shouldn't appear in most non-console applications. Worse, developers new to Scala end up using implicit conversations without even realizing it; this leads to confusion when they go to look up definitions but can't find them. Methods like
assert and
require really seem out-of-place. It'd be nice if I could make it difficult for other developers (and myself) to use these undesirable "default" features.
That said, I am okay with most of the Predef functionality... wrapping primitives, strings, collections, etc. It makes me wish Predef was broken out by responsibility: rich primitives, string wrapping, collections, testings, etc. It would be nice to then turn on only the features you wanted through a compiler flag. Obviously for backward compatibility, by default, all Predefs would be included. Perhaps this is already possible and I just don't know about it?