An algebraic data type is a data type defined out of a combination of two constructions: products and sums. I know you are like well bloody hell mate, what a’ you yappin’ ‘bout? So let’s start with —