About me
Alejandro Serrano Mena is a passionate of formal methods and functional programming in software development, especially using Kotlin and Haskell as languages. He works as researcher in the Kotlin Language Evolution team at JetBrains and helps co-maintaining the Arrow library. He enjoys not only using and improving those tools, but also spreading the word: he's written four books targeting different levels, regularly gives talks in conferences and meetups.
For quite some time Alejandro was an academic, working on the area of compilers and type systems for functional languages. His PhD thesis versed over error messages, and he's been involved in efforts like improving GHC's support for impredicativity. This knowledge is put in practice in several open source projects, many of them using metaprogramming techniques or compiler extensions. Lately, he's becoming interested in formal approaches to modeling, design, and architecture, using tools like Alloy.
Full curriculum vitae
Books
![Cover of FP Ideas for the Curious Kotliner](assets/img/fp-ideas-kotlin.png)
FP Ideas for the Curious Kotliner
Functional programming and Kotlin make such a great couple! In this book we explore ideas from the former that will definitely change the way you look and code in Kotlin.
Kotlin lies in a really interesting intersection of programming styles, with functional programming becoming increasingly popular. Functional style is by no means new, so why not take advantage of the decades of ideas, concepts, and patterns from that community? In this book we explore those ideas with a higher impact on Kotlin code, including how to model data in immutable fashion, describing dependencies using contexts and effects, or treating actions as data.
The free tutorial Poké-Fun with Kotlin and Arrow contains tasks to practice functional programming idioms in Kotlin.
![Cover for Practical Haskell](assets/img/practical-haskell.jpeg)
Practical Haskell
Get a practical, hands-on introduction to the Haskell language, its libraries and environment, and to the functional programming paradigm that is fast growing in importance in the software industry. This updated edition includes more modern treatment of Haskell's web framework and APIs.
You'll see how functional programming is gathering momentum, allowing you to express yourself in a more concise way, reducing boilerplate, and increasing the safety of your code. Haskell is an elegant and noise-free pure functional language with a long history, having a huge number of library contributors and an active community.
- Paperback: Amazon
- eBook: SpringerLink
![Cover for The Book of Monads](assets/img/monads.png)
The Book of Monads
In functional programming, at the heart of input/output, failure, state, logic, and much more, lies a powerful abstraction called monad. This book provides a journey from the very first concepts, to the myriad of monads available to programmers, down to the categorical foundations.
Monads are key to unlocking many powerful patterns in functional programming. Alas, many developers struggle at first with the concept and the applications of monads. This books provides a full dive into the subject, including thorough explanations of adjacent concepts such as functors, monad transformers, final tagless, or extensible effects.
![Cover for Haskell (almost) Standard Libraries](assets/img/stdlibs.png)
Haskell (almost) Standard Libraries
How do I match against a regex? How do I copy a file and handle any exception? These are just a couple of examples of common tasks which require libraries in Haskell. Everybody knows which one you should use... right? This book walks you through the main "standard" libraries in the ecosystem, with lots of examples to get you started.
As opposed to other languages, Haskell's base library is quite slim. However, for many tasks there's usually one community-blessed library. Unraveling that landscape is one of the main thresholds to move from beginner Haskeller to practitioner. This book introduces these "standard libraries", organized by topic. More than 20 chapters provide examples of most common tasks in daily programming, solved using the power of the Haskell ecosystem.
Tutorials
The title of each workshop links to the slides and example code
Haskell
Kotlin
Poké-Fun with Kotlin and Arrow
Create your own deck builder using functional programming patterns
⊢ Programming Languages
Talks
Haskell
Kotlin
⊢ Types and Categories
Category Theory through Functional Programming
LambdaConf Winter Retreat
February 2017
Immutable Conversations
by 47 Degrees
Casual conversations about important open source libraries with maintainers and contributors
Open Source
Arrow
Kotlin
➢ Co-maintainer of the main libraries
➢ Arrow Analysis: Pre-, post-condition, and invariant checks
➢ Plug-in for IntelliJ