https://en.wikipedia.org/wiki/Algebraic_data_type
https://stackoverflow.com/questions/42833270/what-is-the-dif...