15-816 Linear Logic
Lecture 16: Linear Functional Programming
In this lecture we make the step from a lambda-calculus to a
functional programming language. This essentially requires fixing an
evaluation strategy and adding basic data types for representing values.
We will depart here from the Curry-Howard isomorphism and simply add
recursive functions and recursively defined data types to our language.
We use the information on linearity in order to distinguish call-by-name
and call-by-value constructs. The former are usually implemented by
It turns out that full linearity is overly restrictive if all we
are interested in is modeling the distincution between call-by-name
and call-by-value. This could be done entirely with the
strict lambda-calculus, where a strict function evaluates its
argument while an unrestricted function does not.