The European iteration of Lambda World took place on October 25-26 2018 in Cádiz (Spain).
I was lucky enough to be able to participate with two friends and colleagues: Massimo Iacolare and Andrea Vallotti. But the real surprise came in when Avanscoperta asked us to represent them at the event and write an article on Lambda World on their blog.
So… fasten your seat belts: here’s our story of Lambda World Cádiz 2018!
The first day was (mainly) the day allocated to the workshops, but the conference organisers, the 47degrees team, decided to kick off things “the right way” by starting with an unconference.
Brief, fast-paced talks covered a wide variety of topics: from solving “impossible” problems by playing with Scala and Haskell’s type system, to creating reactive system by applying patterns well known by developers coming from the DDD realm, such as CQRS and Event-Sourcing… all the above with little Scala snippets here and there, just to show how functional programming is the cherry on the cake.
The last, awesome talk by Emacs dealt with the topic of Duality, and how you can derive Printer Combinators by starting from Parsers Combinators and “reversing” the arrows.
The dual of a parser is a printer.
Flip all the arrows; Functor becomes ContravariantFunctor, Applicative becomes Divisible, Alternative becomes Decidable, and parser combinators become printer combinators.#LambdaWorld pic.twitter.com/dA5RZfCvbV
— Rahul Goma Phulore (@missingfaktor) October 25, 2018
The “real” conference had not even started yet… and I had already fallen in love! 🙂
From 11am to 12.30pm was the right time to start coding, and there were four workshops to choose from.
Personally, I’ve been making up my mind until the very last second as I couldn’t decide which workshop to participate in: the choice was between Alejandro Serrano Mena’s “Build your own monads” (Alejandro is also the author of the recently published The Book of Monads: Master the theory and practice of monads, applied to solve real world problems), and Jorge Castillo and Raúl Raja’s workshop on completing the implementation of a REST service written in Kotlin by applying a functional design thanks to an amazing library called Arrow.
As you can understand, it’s been a tough choice… but Monads won in the end! 🙂
— Juan Méndez (@vejeta) October 25, 2018
Alejandro’s objective was clear from slide no. 3: Talk! Think! Code!
The session started with an explanation of the advantages of adopting a custom Monad in order to capture the operations, processes and invariables of our domain by incapsulating them in a clear, robust and safe abstraction.
Having then seen a number of case-studies, we decomposed the concept of Monad into its two key components: Syntax and Semantics, namely the capacity of separating the description of a computation from its execution.
There’s a number of different approaches useful to materialise these two components, and we’ve been using techniques such as Final tagless/MTL style and Initial style/Free monads.
Alejandro’s workshop was followed by the lunch break, which is always a good moment to keep chatting about monads and functional programming. When talking about software development, there’s never enough words! That’s why we decided to dig a little deeper on the topics presented by Alejandro and skip the post-lunch workshop session. Here’s a photo capturing that moment! 🙂
Isn’t it true: time flies when you’re having fun! We just opened our laptops and it’s 3.45pm yet… time to go and listen to the talks!
We chose Jean-Baptiste Giraudeau’s Encoding our way to pure FP in Java, which was a very intense talk full of not-for-the-faint-hearted techniques (such as object algebras and trampoline).
These are very useful if you need to overcome the limits of Java’s type-system when aiming to apply the functional paradigm.
Good news is, the techniques shown by Jean-Baptiste during the talk were used to implement Derive4J “a tool to ease functional Programming in Java”.
My brain was literally exploding when I came out of the room!
Coffee break and networking time, and we head straight to Gabriele Petronella’s How to get away with functional programming in frontend applications… making Italy proud! 🙂
The talk’s been outstanding, but I must admit I’ve been completely floored this time around. I was expecting to see front-end use cases solved with elegance with TypeScript and fp-ts… it turned out I was wrong.
Gabriele talked about how to use the idea of scaling issues to convince a front-end developer in getting interested in functional programming, and what strategies are there available so that functional programming can be gradually introduced in projects… without having the whole thing exploding!
One thing is for sure: we couldn’t agree more with Gabriele’s plan to conquer the world!
— Vλadimir Λ (@vladimir_lu) October 25, 2018
And with this we got to the closing keynote of day 1: Diagrammatic Execution Models for Functional Languages, by
Koko Muroya e Steven W.T. Cheung, both PhD students at the University of Birmingham.
— Jerónimo López (@jerolba) October 25, 2018
Before we deal with the talk itself, let’s introduce two of the cornerstones of functional programming:
- Code is made up by expressions that are evaluated and reduced to a value;
- There’s different models of evaluation of expressions, such as : call-by-value (strict) and call-by-need (lazy).
By starting off these two points, the aim of the talk was to present the evaluation process of the expressions by using ad hoc diagrams. On one hand, this helps us understand what happens at run-time during the execution of a program, and on the other hand this helps us build up a language.
To say this session was mind-blowing is surely an understatement. Here’s a sample video: Dynamic diagrams for functional programming.
Check out the Official Album of Pictures of Lambda World Cádiz 2018 here!
Don’t forget to subscribe to Avanscoperta’s weekly newsletter as we share important news on our events and relevant content from our community on a regular basis. Available in English and Italian.