This post is about a story that happened a few months ago. Back then, I attended a three days Software Craftsmanship training on Test Driven Development. More accurately, it was about practicing TDD to gain back control on a legacy C++ code base. Trainings, just as code, are never perfect. Trainers often have to take... Continue Reading →
Implementing Clojure-like Transducers in Idris: advanced transducers
In the previous post, we started the implementation of a small transducer library for Idris. We went over the main concepts, defined types for each of them, and implemented reduce and transduce. We ended the post by building basic transducers such as mapping or filtering. In today's post, we will continue where we left off.... Continue Reading →
Implementing Clojure-like Transducers in Idris: definitions and main concepts
The 1.0.0 of Idris has been released just a few months back. In previous posts, we went over 10 differences between Haskell and Idris and illustrated the dependent typing features of Idris through the implementation of the rules of the Bowling game at the type level. We will continue this series on post on Idris,... Continue Reading →
Hexagonal Architecture and Free Monad: Two related design patterns?
Disclaimer: You do not need to understand Monads to follow this post. This is not a Monad tutorial either, but it might help you getting some intuition on what is a Monad. Some knowledge of Haskell and C++ might help but are not pre-requisite. There is a lot of talk about Domain Driven Design... Continue Reading →
Idris dependent typing challenge: Bowling Kata
The 1.0.0 of Idris has been released just a few months back, just enough to start trying out the language and some of the possibilities dependent typing offers. In this post, we will look at implementing a type safe version of the Bowling Kata in Idris, to see how far we can go with the... Continue Reading →
The alias method, or transforming data to increase efficiency (Clojure).
This post is dedicated to describing a wonderful and beautiful small algorithm that is not widely known. It allows to pick a random element among an enumerated distribution of elements, where each element is associated a weight. This need is frequently encountered, for instance in property based testing libraries. In test.check, it correspond to the... Continue Reading →