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 ]

Frank Pfenning