A visit to Functional Programming World

Nikolaos Margaris
4 min readOct 26, 2019

An event to talk about Scala … Haskell … Kotlin … Clojure … F# … among others. That is Lambda World, one of the largest functional programming conferences in the world.

I attended a lot of talks, sometimes leaving from one and running to catch up with another in the middle and it was really nice discussing with people of the community and learning new things in the FP world.

What more to ask from a conference opening talk other than Emily Riehl’s Categorical View of Computational Effects. It was quite theoretical, at least from my perspective, but focusing on practical examples. Key points were Computation effects as Monads and Lawvere Theory.

By the way, you can find her notes here.

kotlin was also presented as choice for another startup company, which decided to use it as its main tool for fast prototyping and also releasing a product in the market. Data classes really speed things up.

Another interesting topic was Static Introspection in Functional programming. Aditya Siram, who used Nim, was really informative on how we (developers) could benefit from inspecting types at compile/run-time and see how lazy-evaluation of a loop/recursion could help in debugging a program.

Furthermore, I was happy to learn more news about ReasonML by Tianyu Pu, a Booking.com developer, and see how community is progressing to integrate all the good FP concepts, also used in Ocaml, a language which has a long history (since 1996). Immutable properties, more types to use and the most favorite, at least for me, pattern-matching! and interoperability with JS!, gained my interest. I am really thinking of taking small pieces of the projects, I am currently working on, and convert them little by little to .re modules.

By the way, ReasonML compiler is fast!

There is not a FP conference without discussing about Haskell. Harold Carr, Software Developer at Oracle Labs, shared with us his knowledge about Refactoring Recursion and several patterns to achieve this. It was nice to see how sum, product and length of lists could be transformed into ‘fold’ functions. Also, different types of morphisms were mentioned: ana/cata/hylo/para/apo and zygo-morphism; good place to start reading about, I think.

I will only say one phrase: Language Oriented Programming!

This was one the most interesting talks I attended, and also had the luck of listening an after-talk discussing with Matthias Felleisen Trustee Professor at Northeastern University.

Of course, Racket is the tool he uses to teach a lot of people and also consult companies of the industry.

Key points such as:

- Languages emerge As Abstractions to Conquer Complexity

- Hope for Language Oriented programming

- Develop a DSL for writing a DSL that writes a DSL …

will take time to understand and evaluate, however the need to:

- program DSLs quickly and inside the same IDE

- connect all implementations/programs smoothly

- make these connections safe & secure

made things really interesting during the talk. With Racket, it was made clear that you can create and compile functions at the same time! You also have the ability to change a name of a function like providing a new-feature and of course maximizing productivity by creating new languages based on old ones. Most importantly you create ‘Type sound’ systems!

Another interesting topic was ‘Fun with Categories’ by Marco Perone Software Developer at Statebox. An unknown language to me, Idris, was the protagonist of the talk, during which a lot of examples were given based on Category theory’s:

- Objects,

- Morphisms,

- Compositions

- Identities

- Coherence conditions

- Associativities

and of course Functors.

Last but not least, Paweł Szulc, Haskell Developer, made one of the most humorous, easy to digest, and memorable presentations of the conference (in my opinion). He managed to shows how practical Haskell can be by creating a simple API using a series of libraries embracing the Functional Programming at its best.

For reference, the libs used were:

- aeson: used for encodings, fromJson, toJson

- optparse-generix: used for cmd parameters, getRecord

- servant: set of libs, apis, http-server, docs

- polysemy (hot): write dsl for reusable code

To summarize, I encourage every Object-Oriented, procedural or Functional language programmer/developer to attend those kind of conferences, because in the end you will find yourself in the need of learning and also trying to apply all those new things you listened or discussed, to your daily job activities/implementations.

Our job as developers/software-engineers is creative and creative should continue to be.

By the way, Cadiz is amazing!, so it was nice combining a 2-day conference with a couple of days, to a really beautiful, and for some, exotic place like south Andalucia. It helps you remember things more easily ;)

If you want to know more about the conference, you can email me at reverence23@gmail.com.

--

--

Nikolaos Margaris

FrontEnd Technical Lead, all-around player, experienced but also out-of-the-box thinker. ‘New’ has always something to give and ‘old’ always provides the basis.