An implementation of the Typed Lambda Calculus described in https://papl.cs.brown.edu/2018/types.html