[Haskell-cafe] Slightly off-topic: Lambda calculus

Brent Yorgey byorgey at seas.upenn.edu
Sun Jun 21 13:29:17 EDT 2009


On Sun, Jun 21, 2009 at 05:53:04PM +0100, Andrew Coppin wrote:
> OK, so I'm guessing there might be one or two (!) people around here who 
> know something about the Lambda calculus.
>
> I've written a simple interpretter that takes any valid Lambda expression 
> and performs as many beta reductions as possible. When the input is first 
> received, all the variables are renamed to be unique.
>
> Question: Does this guarantee that the reduction sequence will never 
> contain name collisions?
>
> I have a sinking feeling that it does not. However, I can find no 
> counter-example as yet. If somebody here can provide either a proof or a 
> counter-example, that would be helpful.

Lambda calculus is one of those things that seems simple in theory
(because it IS simple in theory) but can be tricky to implement
correctly.  I recommend reading the first few chapters of Benjamin
Pierce's "Types and Programming Languages" for a good discussion of
the issues involved (including explanations and implementations of
both a "named" style, and a "de Bruijn index" style), and then also "I
am not a number, I am a free variable" by McBride and McKinna, which
explains a "locally nameless" style which mixes the best of both
worlds.

-Brent


More information about the Haskell-Cafe mailing list