/recursion-schemes-lc2018

Rrecursion schemes without the barbed wire

Primary LanguageScala

Recursion schemes without the barbed wire

Welcome to INC Inc. We are so happy we just hired a whole team of motivated engineers. Here at INC Inc. (INC is a Neat Company), we are proud proponents of statically-typed functional programming on the JVM — well, basically we use Scala.

On your first day at work, we have a good news and a bad news. The good news is: we have an exciting new mission, our most important client, AcmeCorp has tasked us with the construction of its "meta data lake", whatever that means. The bad news is they want it live by tonight.

But fear not, out architects have already designed the whole system and it works like a charm (on Powerpoint). All you need to do is to follow the specs and write a few Scala lines.

Before we begin

You'll need to fulfill a few requirements in order to get everything work. You'll need to install

  • Java8 JDK
  • sbt

Everything else should be pretty much working out of the box. This project has a few external dependencies though, so in order to save everyone some network bandwidth, it would be cool if you managed to clone the repository and issue the sbt update command in advance of the workshop.

Structure of the workshop

This workshop is made of a series of practical exercises, interleaved with a bunch of useful explanations about specific recursion schemes, patterns and techniques. Each exercise lives in the main package of src/main/scala and a solution to each exercise is available in the solutions package.

TOC

  • 0-PRELUDE
  • 1-SCHEMA
  • 2-AVRO
  • 3-VALIDATION
  • 4-SPARK-AVRO
  • 5-PATCHES