| | |
Summary: Under consideration for publication in J. Functional Programming 1
Typed -calculi with one binder
Fairouz Kamareddine
School of Mathematical and Computer Sciences, Heriot-Watt University,
Riccarton, Edinburgh EH14 4AS, Scotland,
http: // www. macs. hw. ac. uk/ ~fairouz
Abstract
Type theory was invented at the beginning of the twentieth century with the aim of
avoiding the paradoxes which result from the self-application of functions. -calculus was
developed in the early 1930s as a theory of functions. In 1940, Church added type theory
to his -calculus giving us the influential simply typed -calculus where types were simple
and never created by binders (or abstractors). However, realising the limitations of the
simply typed -calculus, in the second half of the twentieth century we saw the birth of new
more powerful typed -calculi where types are indeed created by abstraction. Most of these
calculi use two binders and to distinguish between functions (created by -abstraction)
and types (created by -abstraction). Moreover, these calculi allow -reduction but not
-reduction. That is, (x:A.B)C B[x := C] is only allowed when is but not
when it is . This means that, modern systems do not allow types to have the same
instantiation right as functions. In particular, when b has type B, the type of (x:A.b)C
is taken immediately to be B[x := C] instead of (x:A.B)C. Extensions of modern type
|