Source: https://www-apr.lip6.fr/~tasson/doc/cours/LMFI-Sem-Lambda.pdf