Need help with functional-effects?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

137 Stars 82 Forks 44 Commits 5 Opened issues


The exercises for the Functional Effects workshop

Services available


Need anything else?

Contributors list

# 28,438
40 commits
# 235,711
1 commit
# 181,960
1 commit

Functional Effects

For years, actors have allowed Scala application developers to build async, concurrent, and distributed applications that are resilient, reactive, and scalable. Increasingly, however, functional effect systems like can are being used to create these types of applications, with greater type-safety, more flexibility, and increased testability.

In this course, Scala developers will learn how to solve complex problems in asynchronous, concurrent programming using the ZIO library. Upon completion of the course, attendees will be confident using the ZIO library (and similar libraries, like Monix or Cats IO) to build modern high-performance, asynchronous, concurrent applications that don't block threads, don't deadlock, and don't leak resources; and which follow best practices regarding error management, thread management, and dependency management.

Who Should Attend

Scala developers who would like to write modern async, concurrent, and distributed applications that are robust, testable, and powerful.


Good working knowledge of Scala, including familiarity with immutable data, pattern matching, and basic recursion. Developers who have attended Functional Scala Foundations will be well-prepared for this course.


  • Laziness of functional effects
  • Escaping callback hell
  • Using the compiler to help deal with errors
  • Separating recoverable errors from non-recoverable errors
  • Separating blocking code from async code
  • Safe handling of async and concurrent resources
  • Efficient concurrency and parallelism
  • Shared concurrent state without visibility issues, deadlocks, or race conditions
  • Testing functional effects
  • Retrying and repetition
  • Resource-safe, effectful, async streaming
  • Test-friendly dependency management


From the UI

  1. Download the repository as a zip archive.
  2. Unzip the archive, usually by double-clicking on the file.
  3. Configure the source code files in the IDE or text editor of your choice.

From the Command Line

  1. Open up a terminal window.

  2. Clone the repository.

    git clone [email protected]:jdegoes/zio-intro-game.git
  3. Launch

  4. Enter continuous compilation mode.

    sbt:functional-effects> ~ test:compile


Copyright© 2019-2020 John A. De Goes. All rights reserved.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.