title: Efficacy of sticking to just the functional paradigm in Scala
body: <p>I recently bought <em>Programming Scala</em>, and have been reading through it. The language definitely isn't what I expected! Specifically, it seems to implement just about every programming language idea I'm aware of, outside of Lisp macros and Haskell's type-level side-effect segregation.</p>
  
  <p>Frankly, it has me somewhat overwhelmed. Though I suppose it's nice to have so many tools at my disposal, I was really just looking for a strongly-typed functional language on the JVM. I imagine I could probably use Scala that way, but I imagine if I interact with any libraries or go through anyone else's code, I'll be running into a lot of this advanced (for me) OOP stuff--traits and "object hierarchy linearization," all this abstract and overriding business, singleton, package, and companion objects, implicit conversions... not to mention the various syntactic shortcuts and sugars. </p>
  
  <p>People often bemoan programmers who try to shoehorn one language's style into another, for lots of good reasons. But not all languages are as multi-paradigm as Scala, so perhaps its community has a different view? In F#, for example, there seems to be some leeway in programming styles and how much OOP you use. But just from reading I'm not sure if this is a good philosophy for Scala as well.</p>
  
  <p>Can more experienced Scala programmers help me out here? <strong>Edit for clarity:</strong> Basically, can I safely use just (or mostly) the FP features of Scala without worrying about its advanced OOP side? </p>
  
  <p>Sorry for the rambling question!</p>