Skip to content

BalmungSan/scala-functional-programming-tutorial

Repository files navigation

Functional Programming in Scala Tutorial

This repo contains the notes of the functional programming hotbed of research of the Universidad EAFIT.
This is intended to be a simple introductory tutorial to Scala in general and to Functional Programming (using the Typelevel stack) in it.

Contents

  1. scalaintro This package contains notes for introduction to the Scala Programming Language.
    1. ScalaNotes.scala Basic introduction to the language.
    2. ImplicitsNotes.scala Introduction to the implicits mechanism of Scala (includes ValueClasses too).
    3. SubtypeNotes.scala Variance, Type bounds & Generalized type constraints.
    4. TypeclassesNotes.scala Simple introduction to the typeclass pattern in Scala.
  2. catsintro This package contains notes for introduction to the Cats library for Functional Programming.
    1. MonoidNotes.scala Semigroup & Monoid notes.
    2. FunctorNotes.scala Covariant, Contravariant & Invariant Functor notes.
    3. MonadNotes.scala Monad notes - Id, Error, Eval, Writer, Reader & State Monads notes - Monad Transformers notes.
    4. ApplicativeNotes.scala Applicative & Validated notes.
    5. TraverseNotes.scala Foldable & Traverse notes.
  3. catscases This packages contains the solutions to case studies of Scala with Cats book.
    1. AsyncTesting.scala Solution to the "Testing Asynchronous Code" case study.
    2. MapReduce.scala Solution to the "Map-Reduce" case study.
    3. DataValidation.scala Solution to the "Data Validation" case study.
    4. CRDT.scala Solution to the "CRDTs" case study.
  4. iointro This package contains notes for introduction to the Cats-Effect library for encoding side-effects as pure values.
    1. IONotes.scala Introduction to the IO Monad.

Bibliography

The following is a list of bibliographic material used for this tutorial.