https://medium.com/@cedricdose/functional-programming-using-the-ord-type-class-to-order-things-17c3bfdc20ce