See: https://ucsb-cs56-pconrad.github.io/tutorials/rational/ https://ucsb-cs56-pconrad.github.io/tutorials/rational_ex01/