Currying is an operation that exploits the following mathematical isomorphism of types:
When function currying is enabled, this means that type-checking/inference must build this equational theory into the type unification rules in order to consider types equal modulo this isomorphism.