Lightbend Scala Language - Expert

The power of Scala’s type system, unleashed - advanced object functional programming, implicits, and more. Leverage rich language features to create well-designed libraries or DSL’s, utilizing proven best practices.

Participants

  • Developers who have experience and proficiency in Scala including topics covered in “Lightbend Scala Language - Professional”
  • Developers who want to understand advanced features in Scala
  • Managers who want to gain a deep understanding of functional programming

Benefits

  • Developers gain knowledge and skills to confidently program in Scala at a high level
  • Certified Lightbend Trainers share deep insights that drive business results
  • Advance to the limits of Scala capability!

Outline

  • Recap of important basics
  • Object-Functional Programming in Depth
    • Recursion and tail-recursion
    • Partial functions and partial function literals
    • Curried methods, partially applied functions
    • Lifting methods into functions
    • Folding
  • Mastering the Type System
    • Scala type hierarchy
    • Value classes
    • Type parameters
    • Variance
    • Package objects
    • Lower and upper bounds
    • (Abstract) Type members
    • Singleton Types
    • Type refinements
    • Static duck-typing
    • Path-dependent types
    • Self Types
  • Explicitly Implicit
    • Implicit conversions
    • Implicit resolution, scopes and precedence
    • Library extension via implicit (value) classes
    • Implicit parameters
    • Implicit Values
    • Type classes
    • Implicit parameter chaining
    • Type class examples in the Scala core library
    • Type constructors
    • Context bounds
    • Type witnesses
    • Type tags
  • Domain Specific Languages (DSLs)
    • DSL Building blocks:
      • By-name parameters
      • Currying
      • Higher-order functions
      • Dot-free operator notation
      • Implicit conversions
    • Phantom types
    • Finite State Machines (FSM)
  • Scala Futures and Promises
    • Execution contexts and Thread Pools
    • Creating & working with Futures
    • Futures & Failures - callbacks & recovery
    • Futures, concurrency & parallelism
    • Future.sequence/Future.traverse
    • Creating an already completed Future
    • Dealing with Future[Option[_]] and for comprehensions
    • Futures - Do's and Don'ts
    • Promises
  • Custom Scala Collections
    • Uniform return type principle
    • Collection Builders
    • Like traits
    • Type classes for the tricky cases

Logistics

  • Level: Advanced - knowledge of and practical experience with Scala is assumed as taught in Lightbend Scala Language - Professional
  • Length: Three days - 21 hours of classroom time, plus breaks
  • Approach: Hands-on mastery - students code through workshop case study and explore how to solve the toughest Scala challenges in their own work
  • Requirements: Students bring their own laptops with Java 8

Related Trainings

  • Lightbend Reactive Architecture - Professional
  • Lightbend Scala Language - Professional
  • Lightbend Play for Scala - Professional
  • Lightbend Akka for Scala - Professional
  • Lightbend Akka for Scala - Expert

Next Sessions:

Check back later for new public classes.
Or if you’re a Lightbend subscriber please contact Lightbend to request a private class.

×

Welcome to the Lightbend Enterprise Suite


You are excited about Reactive applications. And you want to build, manage and monitor them easily and reliably in your environment.
We get it. So we built Lightbend Enterprise Suite to help you do that, and more, with a range of powerful Application Management, Intelligent Monitoring, Enterprise Integration and Advanced Tooling features.

×

Welcome to the Lightbend Enterprise Suite


You are excited about Reactive applications. And you want to build, manage and monitor them easily and reliably in your environment.
We get it. So we built Lightbend Enterprise Suite to help you do that, and more, with a range of powerful Application Management, Intelligent Monitoring, Enterprise Integration and Advanced Tooling features.