amousset / foundation

Foundation of functional programming course

Home Page:https://fp-tower.com/foundation/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

FP Foundation Logo

Join the chat at https://gitter.im/fp-tower/foundation Patreon donate button

Synopsis

Module 1: Function

  • Pure functions
  • Polymorphic functions
  • Higher-order functions
  • Recursion
  • Memoization

Module 2: Type

  • Cardinality
  • Algebra of types
  • Types and Tests, Valid Implementation Count (VIC)
  • Parametricity
  • Logic and types

Module 3: Error Handling

  • Unrepresentable state
  • Compare error types: Option, Either, Validated, Try
  • ADT similarities

Module 4: Reader / Writer / State

Module 5: IO / Effects

Module 6: Typeclass

  • Different implementations of ad-hoc polymorphism
  • Eq, Monoid
  • Typeclass laws
  • Instance uniqueness, location
  • Typeclass hierarchy with Semigroup, CommutativeMonoid
  • Use case with distributed computing (e.g. Spark)
  • Higher kinded typeclass with Foldable
  • Typeclass abuses

Module 7: Functors

  • Functor, Applicative, Monad, Traverse
  • Combining effects
  • Variance
  • Typeclass coherence
  • Typeclass granularity

FAQ

Where should I start?

Each module has:

  • a set of slides (linked above) located at docs/$module.html
  • a scala object containing all exercises located at exercises/src/main/scala/exercises/$module/$moduleExercises.scala
  • a scala object containing all answers located at exercises/src/main/scala/answers/$module/$moduleAnswers.scala
  • two test suites (one for exercises, one for answers) located at exercises/src/test/scala/exercises/$module/$moduleTest.scala

Start each module with the slides, at some point you will be prompted to work on some exercises. Do the exercises and check your answers are correct by running the tests for this module. Finally, go back to the slides and repeat the process. If you have any question, please ask them on gitter.

How to run the tests?

sbt "testOnly ${MODULE}*ExercisesTest"

For example for module 1

sbt "testOnly function*ExercisesTest"

Is this course free?

Yes, the material is open source and it uses a permissive licence CC-BY-SA-4.0. However, the slides and exercises are currently made to be run by a trainer. Eventually, we aim to make this course self-study with online videos but it is not likely to happen before mid 2020.

We do encourage people who enjoy the course to make a donation using patreon.

About

Foundation of functional programming course

https://fp-tower.com/foundation/

License:Creative Commons Attribution Share Alike 4.0 International


Languages

Language:Scala 68.9%Language:HTML 31.0%Language:Makefile 0.1%