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
lazy evaluation.
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.
[ Home
| Schedule
| Assignments
| Handouts
| Software
| Resources
]
fp@cs
Frank Pfenning
|