This book gives an introduction to the programming language Scala. It presents it from a functional programming perspective. The book explains with detail functional programming and recursivity, and includes chapters on lazy and eager evaluation, streams, higher-order functions (including map, fold, reduce, and aggregate), and algebraic data types. The book also describes the object-oriented aspects of Scala, as they are a fundamental part of the language. In addition, the book includes a chapter on parallelism in Scala, giving an overview of the actor model.
Vicenç Torra
algebraic data types functional language imperative languages parallelism abstract data types classes and methods functional programming Haskell infinite lists Java lazy evaluation learning by doing object-oriented programming pattern matching polymorphism