Equational coreasoning

Designing software in language that can't let you reason about your code is like building a house without architect. Fixing something afterward will be very hard. Very hard because you will not be able to measure the impact of a change. We can use a very simple definition for equational…

Sprinkle some curry please

We are not going to transform code into curry but rather try to curry some code. As a former C# developer, when I started Haskell, I felt like functions were very differents from what I was used to see in object oriented languages. I just forgot maths: $$ f : \mathbb{Z}…

Direct, continuation, Böhm-Berarducci

Direct Take a programmer, ask him to write a function that doubles an integer. It's highly likely that he will give you something similar to the following: public static int Double(int x) => x * 2; double :: Int -> Int double x = x * 2 The solutions are trivial, but…

In the Beginning There Was Nothing but Darkness

Several years ago, I found myself watching Andre Staltz's talk about Cycle.js. A JavaScript framework that would leverage reactive programming paradigm in front-end developement. The reactive programming paradigm interested me and I wanted to understand the underlying concepts. I had no clue what "side effects" meant, what…