Demystifying functional constructs: options, eithers, semigroups and monads

Speaker Artūras Šlajus  
Language EN
Stage Events
Type Workshop

Functional programming often feels like black magic, but rest assured - it is not.

In fact, it is quite simple to grasp its constructs and the best way to do it is to implement them yourselves.

Depending on the time allocated, we will:

  • Cover the basic ideas of functional programming.
  • Implement our own Option type to deal with 'there is a result/there is no result' case.
  • Implement our own Either type to deal with 'there is either A or B result' case.
  • Implement a semigroup to demonstrate typeclass concept and the power of implicits in Scala by doing a arbitrary nested map (dictionary) merge using semigroups.
  • Implement our own monad type and use it.

Language of the demo will be Scala, but these constructs can be implemented in almost any language.

Requirements for attendees

a laptop, a programming language, a code editor.

Suggestions:, (or other code editor supporting SBT).

I would recommend to initialize a simple Scala project, using instructions found at