• Stars
    star
    194
  • Rank 200,219 (Top 4 %)
  • Language
    Scala
  • Created about 5 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The exercises for the Functional Effects workshop

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.

Prerequisites

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.

Topics

  • 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

Usage

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 https://github.com/jdegoes/functional-effects
  3. Launch project provided sbt.

    cd functional-effects; ./sbt
  4. Enter continuous compilation mode.

    sbt:functional-effects> ~ test:compile

Hint: You might get the following error when starting sbt:

[error] typesafe-ivy-releases: unable to get resource for com.geirsson#sbt-scalafmt;1.6.0-RC4: res=https://repo.typesafe.com/typesafe/ivy-releases/com.geirsson/sbt-scalafmt/1.6.0-RC4/jars/sbt-scalafmt.jar: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targe

It's because you have an outdated Java version, missing some newer certificates. Install a newer Java version, e.g. using Jabba, a Java version manager. See Stackoverflow for more details about the error.

Legal

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

More Repositories

1

blueeyes

A lightweight Web 3.0 framework for Scala, featuring a purely asynchronous architecture, extremely high-performance, massive scalability, high usability, and a functional, composable design.
Scala
738
star
2

functional-design

Exercises for the course 'Functional Design by John A. De Goes
Scala
234
star
3

zio-workshop

Real World Functional Programming with ZIO
Scala
195
star
4

functional-scala

The repository for the Functional Scala workshop.
Scala
178
star
5

lambdaconf-2014-introgame

Online material for the Introduction to Functional Game Programming with Scala workshop.
Scala
162
star
6

scalaworld-2015

Supporting material for ScalaWorld 2015.
Shell
99
star
7

stax

A functional standard library for HaXe, loaded with a full stack of features.
Haxe
69
star
8

scala3-for-scala2-developers

Scala
65
star
9

advanced-zio

The material for the Advanced ZIO Workshop.
Scala
63
star
10

functional-data-modeling

The exercises for the Functional Data Modeling workshop.
Scala
58
star
11

scalaua-2019

The workspace for ScalaUA 2019 presentation, "Thinking Functionally"
Scala
57
star
12

fp-to-the-min

Code for FP to the Min talk at Scala in the City Conference.
Scala
53
star
13

intro-to-ps

Introduction to PureScript materials.
PureScript
31
star
14

zio-features

ZIO Features
Scala
21
star
15

foundations-scala

An accompanying repository for the workshop 'Fundamentals of Functional Scala'
Scala
20
star
16

advanced-functional-design

The material for the Advanced Functional Design workshop
Scala
18
star
17

intro-rust

Material for the course, An Introduction to Rust.
Rust
17
star
18

zio-webapp

Scala
16
star
19

jvm-perf

Materials for a workshop on JVM performance optimization
Java
14
star
20

sbtb-2016

Streams for (Co)Free! β€” The supporting repository for a 2016 Scala By The Bay presentation
Scala
14
star
21

RosettaJson

A Scala library for library authors who want to support different JSON libraries.
Scala
14
star
22

scala3-macros

The workshop materials for the course on Scala 3 metaprogramming.
Scala
13
star
23

rust-web

The materials for the workshop, Introduction to Rust Web Programming.
Rust
10
star
24

redeyes

A next-generation web framework for building robust, purely-functional, strongly-typed, richly annotated RESTful web services.
9
star
25

fun-with-automata

Accompanying material for the Fun with Automata talk at Frontier Developers, May 24th 2012
Scala
8
star
26

advanced-scala-cc

Workshop materials for Advanced Scala, delivered at Functional Scala 2023.
Scala
6
star
27

foundations-streaming

Material for the workshop 'Foundations fo Streaming'
Scala
5
star
28

zio-errors

Scala
5
star
29

winter-retreat-2018

Winter Retreat 2018.
Shell
3
star
30

textype

A Scala library for detecting and parsing structured text files.
Scala
2
star
31

spartans-rust

Rust
2
star
32

blueeyes-services

Open source services for the BlueEyes web framework.
1
star