Our engineers come from various backgrounds and fields of study. Some of them are already brilliant Haskellers when we recruit them, some of them come through internships or after showing great results at ITMO. Similarly to Haskell, Serokell is a melting pot of cultures and ideas, and we like it that way.

In order to learn about various ways one could end up doing functional programming at a company like Serokell, I asked three of our engineers how they started with FP. The answers were low-key amazing and surprisingly different from each other. While Pasquale was struck by the expressivity of the language, someone like Anton has found in Haskell a great vessel for applying his knowledge of category theory.

But I won’t give you any more spoilers – read on!

From Python to Haskell

Pasquale Pinto

I first encountered functional programming with, oddly enough, Python. At the time, it was the language I was using almost exclusively and had done so for quite some time. As such, I knew most common practices, tooling and even pointless curiosities about it, the only real exception was its (relatively uncommon) functional side.

However, after a few times I had seen/used it, it struck me as very expressive and so, out of curiosity, I decided to take a deeper look. Wandering around forums and such, eventually (perhaps inevitably) someone suggested a “real” functional language: Haskell. As soon as I opened haskell.org, I had a flashback: I had been there before, multiple times, and even completed the small interactive tutorial, but somehow it didn’t catch my attention beforehand.

This time, I decided, it was going to be different, so I picked the book that seemed the most beginner-friendly – Learn You a Haskell for Great Good and I imposed myself to finish it, hoping not to regret the time it would take. I went through the first half of it only out of stubbornness: I didn’t see what was the point and making even simple things seemed comparatively very cumbersome. Definitely not impressed.

Then all of a sudden it hit me: the first eureka moment arrived when I learned about partial application and that every function is curried. It took me half an hour just to stop considering the endless possible applications of these two combined and how composable, readable and versatile (aka elegant, I later learned) the language really was, not to mention this was just impossible in any programming language I had ever seen before.

Even though the complexity of the arguments quickly grew, and took me quite some effort to keep up, I devoured the rest of the book and kept learning from everything I could find from that moment forward.

Then all of a sudden it hit me: the first eureka moment arrived when I learned about partial application and that every function is curried.

For me, it was quite hard to implement non-toy-sized code at first, but eventually I managed to write a couple of small projects. At that point, I knew I wanted to do this full-time and lucked out when I got a position at Serokell.

I have since learned tenfold about Haskell, quite a bit about Elixir, and functional programming in general; to this day I still get surprised at the possibilities and cleverness of the community and my colleagues. So, in the end, I cannot say it has been a walk in the park, but this all makes it worth it. No ragrets.


How Did You Start with Functional Programming?
1.20 GEEK