Abstracted over lambda calculus types