Table of Contents
Lambda world Cádiz, one of the most important conferences on functional programming in Europe, took place in Cádiz on October 25 and 26. A software development team from Apiumhub was there attending some of the talks. Since the lectures and the workshops took place in several simultaneous tracks, we could not attend all of them, so we will explain to you those we went to and give you some highlights.
Lambda World started with an unconference where several people gave lightning talks.
Lambda World unconference
It was an interesting part, the first speaker was Juan Manuel Serrano, CTO of Habla Apps, who was also a speaker at Software Crafters BCN 18. His talk was about solving a problem that required dependent types for which he used Scala + Shapeless, but also implemented the same solution with Agda. Very interesting! He showed us how to extend the Scala native Collection types and left us with eager to explore more.
The next lightning talk was led by José Escanciano, chief architect of Addison Global. His talk was about the architecture they have implemented in MoPlay, programmed in Scala and making a strong use of microservices and reactive programming. An architecture based on CQRS and Event sourcing and with an interesting approach.
Nikita Tchayka showed Eta lang and its interoperability with Java, Scala and other languages of the jvm using a language based on Haskell.
The next talk also dealt with Haskell, but this time Haskell in live coding. Alejandro Serrano programmed the same implementation that Juan Manuel Serrano taught in Scala and Agda, but in Haskell. Awesome!
The unconference ended up with a talk by Pepe García, from 47Deg, who gave us an interesting point of view on how to combine parsing methods to encapsulate the logic of parsing. After that, he explained the use of Contravariant and other typeclasses to achieve a customized printing and closely linked to its counterpart, the parsing.
Lambda World workshops
The workshops were of a high level!
The first workshop we went to was about “Building your own Monads” and with the speaker Alejandro Serrano again on the stage we received a new dose of Haskell.
He did an exercise in which we designed and implemented our own monad. The example that he chose was about the game “Tik-tak-toe”.
Alejandro explained three ways of creating our new monads, initial style, final and operational style, initially in Scala and Haskell and finally showing the Haskell implementations and explanations on blackboard. A very interesting talk where we opened the world of the Free Monad, the Freer Monad, the difference with the Free Monad of Scala and how this helps us to abstract a large part of the implementation of our own and customized monads.
Jean-Baptiste Giraudeau gave a masterly talk on how to program exceptionally well in Java using functional programming. It was nice to see that not everyone has taken the step to Scala, and that you can do exceptional things in Java.
And the day 1 was ended up with a keynote of Koko Muroya and Steven W.T. Cheung, PhD students at the University of Birmingham. A talk covered more the part of a scientific field rather than the practical one, in which they taught what a functional program really does when you execute it, showing diagrammatic models to understand which paths our programs follow, using their own programming language, the one that they are developing. With very interesting examples they showed us how a function is evaluated depending on whether you ask for an evaluation strategy or another one (call-by-value, call-by-need) as well as the the benefits that a generator of diagrams gives us for code like yours .
And here begins day 2 full of interesting and motivational talks. The first one was a fantastic keynote of Felienne Hermans. Unlike the closing keynote of day 1, this keynote went to the opposite extreme, nothing technical, but scientific! Felienne talked about her life, about how she discovered (and created a dissertation about it) that excels are programs, and that people who work with them are actually programmers and that they have their own language. She talked about something that caught our attention: we do not have a common way of reading code. Each one reads the if and the for in a different way. How can we teach children to program then, if each person tells them something different about the same concept? A talk that did not deal with the functional programming and that nevertheless seemed to us to be the best in the Lambda world.
And since we had not received our dose of haskell yet, we went to Headfirst Haskell in the hope that they would give us advice and a path to follow for those who want to start with this language. Abby Sassel told us about her year learning Haskell and the advice she could give in this regard. It was less technical than we expected, but it gave us many ideas.
One of the talks that filled the room was Testing in the World of Functional Programming, by Luka Jacobowitz. In a world like functional programming where testing is not “as much” considered as in the OOP, Luka explained, among other things, what gives us the property based testing, limitations it has. And how to solve some of these limitations with, for example, refined types in Scala.
Itamar Ravid gave us examples of the use of many concepts in Scala, demonstrating the practical use of various concepts such as Writer, WriterT, IO, IndexedStateT, Co-products, Codensity, a talk closely linked to the one given by Paweł Szulc ( A roadtrip with monads: from MTL, through tagless to BIO ) where he used a large part of these concepts and many more not mentioned above in a brutal refactor towards a totally abstract code, with a good analysis as to what each phase of the refactor had contributed (and removed).
And the last talk (The Complexity Trap: Think Before You Leap) we went to was one that explained us: All this is really good, but we do not have to lose sight of the accidental complexity that we bring. That we do not have to obsess about abstraction, because it has a cost. Boring solutions are sometimes beneficial.
The conference ended up with a keynote about the imposter syndrome, something that most of the people in the room had felt at some point. Another keynote nothing technical but that made many people feel better.
Lambda World is a great conference if you want to enter this world and fill your notebook with concepts that you are eager to learn!
If you would like to know more about Lambda World, I highly recommend you to subscribe to our monthly newsletter by clicking here.